Программирование : Dart & Flutter по-русски
Вадим
Эмулятор трудно поставить на подставку
Вадим
А телефы просто кладу на стол или в руке держу
Not That Onion
[
"Да, с эмулятором таких проблем не возникало совсем :D\nЗапостил тот же вопрос на реддите, надеюсь что будут примеры от других людей)\n",
{
"type": "link",
"text": "https://www.reddit.com/r/FlutterDev/comments/dt58rm/how_does_your_testing_station_looks_like/"
},
""
]
Dima
а можно как-то сравнение множественное делать? if (1 != 2 && 1 != 3) чтобы как-то вместо этого написать что-то наподобии if (1 != 2 , 3) ??
Not That Onion
[
{
"type": "pre",
"text": "if ([1, 2, 3].every((n) => n != x)) ...",
"language": ""
}
]
Not That Onion
но если элементов немного и они заданы наперед, лучше как в вашем примере
Andrew Mar
Ребят, кто-то знает как сделать вот такой элемент ?
Max Team
Предположения принимаются?) Или прям 100% инфа нужна? у меня не было необходимости такой элемент делать
Andrew Mar
Предположения принимаются )
Max Team
Я бы сделал так: Column( container(с необходимыми размерами в форме прямоугольника), Container(с необходимыми размерами в форме круга), И повторяем эти элементы ещё 2 раза)
Max Team
Очень информативно получилось??
Andrew Mar
Вот нужно сделать примерно такое, тоесть расстояние между точками зависит от высоты блоков рядом
AlexZander Furmanchuk
Я такое делал, могу чуть позже код скинуть
Andrew Mar
Спасибо. Буду очень благодарен
Sergey Salnikov
Я вижу два варианта. Первый Row у которой круг и две части линии, а правая часть контент. При помещении их в Column, получишь финальный результат. Этот вариант лучше, так как в последнем/первом row ты можешь не делать начальный или конечный отрезки
Sergey Salnikov
Второй Стек с линией, над ним column row круг и контент
Andrew Mar
Спасибо за идею
Kostia
[
"Можешь покопаться в исходниках ",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/material/Stepper-class.html"
},
", виджет похожий"
]
AlexZander Furmanchuk
Скинул в личку
Stanislav Sagan
[
"А в дарте есть аналог джавоскриптового ",
{
"type": "code",
"text": ".map()"
},
" чтоб возвращало новый массив?"
]
Виталий
[
{
"type": "link",
"text": "https://dart.dev/guides"
},
" сюда заглянуть прям вообще никак?"
]
Stanislav Sagan
Я там еще плохо ориентируюсь.. А гугление слова map выдает Map
Виталий
Значит плохо гуглите.
Victor
массивы в дарте называются list, гугли dart list map, а не dart map
Rookie Krewkie
[
"Как перестать использовать ",
{
"type": "code",
"text": "InheritedWidget"
},
", ",
{
"type": "code",
"text": "BLoC Provider"
},
" и прочие многословные паттерны и стать счастливым кодером.\nНабросал статейку, как применять ",
{
"type": "code",
"text": "потоки и стримы на стероидах"
},
" даже в маленьком проекте, используя магию ",
{
"type": "code",
"text": "rxdart"
},
".\n",
{
"type": "link",
"text": "https://habr.com/ru/post/474968/"
},
""
]
Stanislav Sagan
[
"ага, нашел, спасибо.. Так и называется map..\n",
{
"type": "code",
"text": "moviesTitles.map((title) { return Tab(text: title)}).toList()"
},
""
]
Sergey Salnikov
Даааа, отличное понимание Rx, сделал BehaviorSubject и чтобы появилось первое значение в методе build!!! виджета инициализируешь. Гениально! Нет. Не берись писать об Rx, пока не выучишь все основы. Не берись писать о flutter, пока ты выполняешь инициализацию в методе build stless виджета.
Rookie Krewkie
[
"да ради бога, спрячь инициализацию в конструктор класса \n",
{
"type": "pre",
"text": "class _Counter {\n int count;\n\n _Counter(this.count) {\n onCounterUpd.add(count);\n }\n\n /// 3. Создадим евент.\n final onCounterUpd = BehaviorSubject ();\n\n /// 4. Вынесем инкремент за пределы виджета, добавим генерацию события.\n Future incrementCounter() async {\n onCounterUpd.add(++count);\n }\n\n}\n\nfinal _counter = _Counter(10);",
"language": ""
},
"\nкак это отменяет саму фишку реактивности, о гуру помпезности и высокомерия???"
]
Sergey Salnikov
Ещё раз про Rx, не понимаешть что такое BehaviorSubject, не пиши глупости Дискредитируешь себя ведь
Rookie Krewkie
[
{
"type": "code",
"text": "Subject that emits the most recent item it has observed and all subsequent observed items to each subscribed Observer."
},
"\n",
{
"type": "link",
"text": "http://reactivex.io/RxJava/javadoc/rx/subjects/BehaviorSubject.html"
},
"\nВыпускает последний принятый итем, и все последующие для каждого следующего подписчика. \n- ему необходимо инициализирующее значение, дабы не быть нулевым при первом обращении.\n- в любое время можно получить последнее значение, которое ему присвоили.\nЧто-то упустил?"
]
Sergey Salnikov
[
"У тебя всё работает \n",
{
"type": "pre",
"text": "используя магию rx\n",
"language": ""
},
" (цитирую твой пост)\nЕсли ты пишешь статью и заявлеяшь о знании Rx, то объяснять про BehaviorSubject я не буду.\n\nНо видно что ты его никогда в глаза не видел и не применял.\n\nСтатья вводит новичков в заблуждения, об этом я бомблю"
]
Serge Shkurko
если в методе build мутировать данные, это может приводить к неочевидным проблемам. Например в andoird 10+ & ios 13 + можно сменить системную тему (светлая \ темная) что приведет к перерисовке всего приложения, в последсвии вызовет метод build и данные отправятся повторно
Serge Shkurko
Тут наверное было бы правильнее конвертировать компонент в стэйтфул и в нем сделать вызов onCounterUpd
Sergey Salnikov
как тебе использование BehaviorSubject? =)
Rookie Krewkie
А посмотри, я убрал из build в другое место, а именно в конструктор класса данных. На самом деле это не про BehaviorSUbject, а про неправильное место инициализации. Ну это повод для дискуссий, правок, но не повод для высокомерных высказываний. Ты с водой выплескиваешь ребенка.
Rookie Krewkie
У меня проект на 20К+ строк, в нем я 100+ раз применяю и да, в билде я нигде не инициализирую, тут видимо косяк. Но работает на ура, и логи не показывают лишних перерисовок.
Sergey Salnikov
Ещё раз! Непонимание BehaviourSubject привело ко второй ошибке (init в build), вторая итерация с инициализацией сабжекта показывает твоё шапочное знакомство с ним Парень, ты дилетант в Rx и Flutter, но пишешь статьи, на этом всё
Sergey Salnikov
это не отменяет твоего дилетанства, сознаешься в нём - покажу ошибку
Stanislav Sagan
[
"Я не очень понял, dart 2.6 уже вышел? или это просто анонс?\nЕсли да, то как на него обновится? ",
{
"type": "code",
"text": "flutter upgrade"
},
" не апгрейдит дарт"
]
Stanislav Sagan
Агааа.. Спасибо большое, я лучше подожду полную стабильность в флаттер..
Sergey Salnikov
[
{
"type": "mention",
"text": "@rookie_krewkie"
},
" ещё не нашёл пробел в знаниях? ещё вводишь новичков в заблуждение?\n\nсмотри на именованные конструкторы BehaviourSubject и поправь статью, когда поймёшь\n\nвсё, кофеёк выпит и токсичность спадает =)"
]
Виталий
Потому что дарт также можно обновить через пакетный менеджер
Виталий
Если нужен не только для флаттера
Stanislav Sagan
[
"если ты про ",
{
"type": "code",
"text": "packages upgrade"
},
", то не, он не обновляет тоже(\nя все равно лучше подожду"
]
Кирилл Пешин
О! А как это сделать?? В pubspec?? Вроде 'копия' Дарта 'вшита' во Флаттер??
Виталий
Ты походу вообще не шаришь за сдк
Виталий
[
{
"type": "link",
"text": "https://dart.dev/get-dart"
}
]
Виталий
Ну я скорее о том, что складывается ощущение что дарт - это прям флаттер
Кирилл Пешин
Это установка под Винду, Флаттер все равно свой Дарт использует...
Виталий
Ну, не только под винду
Виталий
Флаттер идет с встроенным дартом, да
Виталий
Но дарт сам по себе можно и отдельно установить
Кирилл Пешин
В моем случае только:-)
Виталий
Ну это андерстендабл
Виталий
Просто новые фишки дарта можно отдельно от флаттера попробовать
Кирилл Пешин
Я думал есть возможность обновить локально Дарт в своей копии Флаттер... Стало интересно...
Виталий
А если в флаттере только хочется - то ждать
Виталий
Ну я видимо некорректно выразился
Sergey Salnikov
[
{
"type": "mention",
"text": "@rookie_krewkie"
},
" модерируй мой комент к статье на habr\nВ другой раз лучше проси проревьюить draft статьи"
]
Rookie Krewkie
А какой твой?
Serge Shkurko
Путь я тебе подскажу: flutter\bin\cache\dart-sdk Дальше думаю догадаешься :)
Serge Shkurko
но это все костыли конечно
Кирилл Пешин
Скорее всего первый же flutter/pub upgrade все перекачает заново...
Rookie Krewkie
Видишь ли.... Мой косяк был в торопливости подачи, да. В реальности в моем продакшн коде в View слое нет вообще никакой работы с данными. 95 процентов в бизнес-слое, 5 в ViewModel. Но манера, с которой ты набросился на статью с самого начала была абсолютно неконструктивна и высокомерна.
Serge Shkurko
это само собой, жду не дождусь стабильного выпуска флаттера с dart 2.6 чтобы потискать экстеншн методы на продукте
Serge Shkurko
с самого момента, как начал писать на flutter'e ждал и следил за этой фичей на gh
Aleksey
а мне кажется экстеншены это спорная фича, код может работать не так как выглядит, или вообще не работать, потому что гдето есть екстеншен, который все портит
Rookie Krewkie
Я все вспоминал, что мне напоминает твой стиль комментирования? И вспомнил ведь! В 1999 я начал кодить профессионально, и обращался с вопросами по BCB на русскоязычные форумы поначалу. Так вот, вместо ответов чаще всего прилетало RTFM, и "гыгыгы". Потом намастырился с английским и перешел на англоязычные форумы и тогда понял разницу... Эта та самая разница, которая видна в общении даже на улицах за рубежом и у нас. Так вот, видимо у тех русскоязычных комментаторов дети подросли и тоже пошли в кодеры...
Sergey Salnikov
deleted upd инет затупил
Sergey Salnikov
[
"я использовал сарказм, без высокомерия и помпезности\n",
{
"type": "link",
"text": "https://t.me/rudart/120656"
},
"\n\nно ты начал зарываться, вместо запроса указать на ошибки\n",
{
"type": "pre",
"text": "о гуру помпезности и высокомерия???",
"language": ""
},
"\n\nя знаю Rx давно и уже неплохо Flutter, я не новичёк в них, но никак не тот гуру, о котором ты\n\nавтор статьи, который льёт в уши новичков своё не понимание - большая беда для такого маленького русского сообщества"
]
Sergey Salnikov
1999 похож на твой год рождения, поскольку ты так и не научился читать доки на английском (пруфы в коментах на habr) А мой первый хэлловорд был в 1989 на Sinclair basic, собранном моим отцом (4шт на весь Питер) Ты пишешь такие дилетантские статьи, зачем? Эффект Даннинга Крюгера в действии
Sergey Salnikov
я тебе ответил на habr'e ты не читал доки или не знаешь английский, но опять заявляешь о знании и профессиональном кодинге(дурацкий англицизм)
Aleksey
парни, может отношения в личке будете выяснять?
Sergey Salnikov
да уже выяснили, сорян Главный итог - не все стати в интернете одинаково полезны!
Aleksey
дай ссылку, что за статья
Sergey Salnikov
[
"вот авторский пост ",
{
"type": "mention",
"text": "@pretorean"
},
"\nсделал комент, что конкретно порпавить в статье ",
{
"type": "mention",
"text": "@rookie_krewkie"
},
""
]
Aleksey
а мне статья понравилась, хорошая идея, надо следующую статью, где стримы блока заменить на rx
Sergey Salnikov
[
"ты не видел первую версию и сейчас она ещё кривая\n\"гуру 1999lvl\" Rx, Flutter вводит новичков в заблуждение\n\nСтатья для тех кто ваще не рубит в streams, Rx\n\nupd это не первая статья, он знаком с Rx ~4 года, но не умеет в него\n",
{
"type": "mention",
"text": "@rookie_krewkie"
},
" парень диагноз плох - мамкин писатель самопиарщик"
]
Sergey Salnikov
rxdart это расширение над streams - не надо ничего менять, просто используй как stream и flutter_bloc(c v1.0.0) полностью переехал на интерфейс stream
Виктор Ященко
Блин зачем столько желчи. Чувак написал статью, выставил ее на всеобщее обозрение, попытался в ней объяснить что то, что считает важным. Наделал косяков, с кем не бывает. Напиши где он затупил, и пусть ищет/исправляет ошибки. А тут столько яда налил, как будто из за его ошибки как минимум кто то умер. Критика это всегда очень хорошо, но когда в ней пытаются задеть человека,никто ее всерьез не будет воспринимать
Sergey Salnikov
прочитай первый мой комент, начат он с сарказама, но последние строки полны истины - не знаешь - не учи других(медвежья услуга) А дальше автор показал полностью непонимание о чём пишет, при этом имея заявленный опыт в Rx ~4 года
Виктор Ященко
Я возможно слишком бегло посмотрел и не увидел, но покажи пожалуйста, где он написал, что собирается учить всех нас, заблудших, аки пастырь?) Я увидел только что он просто выложил статью, которую вроде как никто и не воспринимает как самоучитель) Это вроде не желание учить, а скорее желание поделиться своим видением, в котором наделал ошибок, бывает что уж)
Виктор Ященко
Единственное хотелось бы сказать. Хватит уже юзать этот каунтер. По нему же совершенно непонятно хороша ли будет архитектура или нет. То что хорошо будет работать с каунтером, сдохнет на пагинации. Собсно поэтому я к статье и не стал относиться серьезно)
Виктор Ященко
Но чувак ее выложил на общий суд, что уже в принципе похвально
Sergey Salnikov
Писать статью надо тогда когда ты знаешь о чём говоришь, а не в случае автора. Присоединяйся к коментам на habr, если знаешь о чём говоришь.
???????
Можно вопрос?) Как у тебя вообще в голове складывается rxdart и bloc и provider?)
??????>? Maksim Mukharev
[
"У ",
{
"type": "mention",
"text": "@nowandever"
},
" знатно пригорело, словно автор ему дорогу перешел. Зато бесплатный пиар, я хоть так про статью узнал и о том, что автор подобные темы на Хабре поднимает )"
]
Sergey Salnikov
ой, щас, мамкиным пейсателям кода "с1999года" попадёт =))) я был ещё цветочком =)
???????
rxdart - это оберточка над стрим и стримконтроллер, обладающая терминами rx и дающая удобные фичи. bloc - это про стейтменеджмент, причем сделаный на rxdart provider - это виджет, ui слой и обертка над InheritedWidget, проще говоря - DI в интерфейсе.
???????
Вообще координально различные вещи, служащие разным целям и уж точно не взаимозаменяемые, а взаимодополняемые
???????
Я не настаиваю, но лучше перепиши статью под "hello world" с использованием streambuilder и rxdart.
Sergey Salnikov
ох, видел бы ты первый вариант статьи BehaviourSubject пополняется первым значением в buid() stless виджета
???????
Я комментарии прочитал)
Sergey Salnikov
ты сегодня пушыстый и мягкий =) погодка хорошая что ли в мск? =)
???????
Естественно в виджетах логики вообще быть не должно.
???????
Она всегда плохая)
Sergey Salnikov
это ты Питерцу рассказываешь? =)))) мы завидуем погоде вашей
???????
Ну у вас не сильно хуже) Прост более "английская" чтоли)
Dmytro Bondarchuk
Всем привет Нужен совет по построению UI У меня сейчас такая структура: StatefullWidget --Column ---- Widget 1 ---- Widget 2 ---- Widget 3 ---- Widget 4 ---- Widget 5 Так же у меня есть Stream Controller и от его значение зависимы , например, Widget 1,2 и 5. Как лучше сделать: 1)обернуть column в StreamBuilder 2)эти три виджета(1, 2, 5) каждый отдельно обернуть?
Dmitriy
скорее первый вариант
Sergey Salnikov
[
"Второй вариант без раздумий, обновлять нужно только ту часть дерева что зависит от изменений\n\nНужны объяснения почему?\n",
{
"type": "mention_name",
"text": "Dmitriy",
"user_id": 398493089
},
""
]
Maxim
Даже если тудушку пилишь и нужно чекмарку поставить?
???????
Да Всмысле "да", этот вариант без раздумий. В идеале еще и where() в стримконтроллерах не забыть, дабы избежать лишних перерендериваний
Sergey Salnikov
В StreamBuilder'ах ты хотел сказать?
???????
Ой, да. Опписался)
Sergey Salnikov
Зная твой опыт я по-другому и не подумал бы =)
???????
Да хватит, какой у меня опыт)
Sergey Salnikov
Релевантный для флаттера и Rx
???????
Яж такой же пездюк как и ты)
Sergey Salnikov
Пездюк хотел бы работать в RedMad, если бы взяли и платили как сейчас тут=)
???????
У нас нет флатера. А я 1с'ник) Но есичо, мы и в Питере есть. Если вдруг, будет что по флатеру - обязательно дам знать. Но пока только нативные разработчики + два ведущий программиста на РН.
Sergey Salnikov
Я в курсе офиса в Питере =)
Dmitriy
Если используется БЛОК StreamBuilder как бы не нужен
???????
Кто тебе это сказал?
Sergey Salnikov
Ты прочти пост, там StreamController, а не bloc И никто не мешает слушать bloc через StreamBuilder
Dmitriy
На сколько я понял из документации под капотом в BlocBuilder StreamBuilder
Sergey Salnikov
при чём тут bloc? у автора вопроса просто StreamController
Max
Еще убрать бы лишние комментарии в коде. А статью в целом проверить на соответствие русскому языку.
???????
1) какое это отношение к BLoC, если он вообще не про виджеты? 2) кто тебе запрещает слушать его state стримбилдером 3) насколько слышал, новая версия bloc и есть StreamController и можно напрямую слушать даже сам bloc, а не его state.
Dmytro Bondarchuk
[
{
"type": "mention",
"text": "@nowandever"
},
" , ",
{
"type": "mention",
"text": "@PlugFox"
},
" , спасибо\nСклонялся к этому ответу, но не был уверен)"
]
Sergey Salnikov
3) так и есть, я переехал (v.1.0.x), просто bloc.add()
Dmitriy
Он про виджеты в том числе это все в совокупности
???????
[
"Угу.\nТам наверняка какойнить ",
{
"type": "code",
"text": "class Bloc extends PublishSubject {}"
},
""
]
???????
Еще не умел удовольствия пощупать
Sergey Salnikov
правильному чёткому вопросу, правильный конкретный ответ u welcome! все welcome, кто хочет копать глубже
???????
[
"А, наврал\n\n",
{
"type": "code",
"text": "abstract class Bloc extends Stream implements Sink {} "
},
"\n\nВот так выглядит новый Bloc"
]
Sergey Salnikov
не успел тебе копипасту принести чистый интерфейс dart streams
???????
Угу, что логично. Я чот запамятовал, что там оно наружу смотрит именно чистым async
Олег gygyms
День добрый. Пытаюсь разобраться с flutter и redux. Подскажите такой момент: первый раз когда получаю с сервера список заданий - нормально обновляется виджет. Когда же я его меняю, state меняется, но ничего не ребилдится.
Олег gygyms
[
{
"type": "link",
"text": "https://pastebin.com/KrmwYLdX"
}
]
Денис
Кто шарит в Rx подскажите, я получаю Stream , а мне нужен BehaviorSubject. Как можно переделать Stream в BehaviorSubject?
???????
Subject - эт СтримКонтроллер
???????
там полюбому есть чото на вроде .addStream()
???????
[
"ну или можешь ",
{
"type": "code",
"text": "Stream .forEach((Model model) => BehaviorSubject.add(model))"
},
""
]
???????
Разница, если что, есть)
Денис
оу AddStream вроде то что нужно, спасибо)
???????
Ты должен понимать, что нельзя добавить 2 и более стримов за раз. Эксепшен получишь.
???????
В этом и основная разница
Денис
мне нужен только один стрим, просто по факту я трансформирую Stream в BehaviorSubject). Но все равно спасибо за предупреждение)
???????
Аналог Stream в rx это Observable Тоже должен это понимать)
???????
Subject это аналог StreamController
???????
Разницу между Stream и StreamController, думаю, понимаешь)
Денис
Мне BehaviorSubject ближе тем что там можно получить последнее value и не париться) и при этом StreamBuilder ест его тоже)
???????
Если ты оперируешь .value сабжекта - это звоночек о том, что ты что то делаешь не так
???????
[
"И давай еще разок, просто для закрепления\n",
{
"type": "pre",
"text": "import 'dart:async';\n\nvoid main() {\n final Stream myStream = Stream.empty();\n final StreamController myStreamController = StreamController();\n myStreamController.addStream(myStream);\n myStreamController.sink.add(null); // <= exception\n}",
"language": ""
},
"\nВот тут ты поймаешь исключение.\n\nВсе, я ушел."
]
Денис
У меня висит функция котороя использует содержимое стрима, как мне не использовать value для отправки текущего значения на сервер? Ждать следующего объекта попавшего в стрим?
Денис
или вешать переменную и слушать стрим и при каждом объекте в нем перезаписывать переменную?
???????
Менять всю архитектуру. использовать троттлинг или дебаунсер, если проблема в куче значений, раз уж выбрал rx
???????
Я почти на 100% уверен, что твоя беда в том, что ты не умеешь в реактивщину на достаточном уровне, поэтому ищешь способы присрать сбоку императивные костыли.
Денис
Возможно) просто до сих пор не пойму как мне общаться с сервером с помощью стримов вместо значений)
???????
Советую хотяб на будующее отложить себе это как вектор развития и подумать, как можно избавится от .value, целиком переиначив всю твою логику
Денис
я уже думаю над этим)
Dmytro Bondarchuk
Кстати о реактивщине. Возможно у вас есть материалы под рукой по ней? А то я тоже не умею в реактивщину, а хотелось бы)
???????
Если вопрос ко мне, то сходу вряд ли вкатишься. Это делается постепенно и через превозмогание, перестраивая мышление. Информации по ней в целом куча, в том числе и на русике. Собственно применимо к флатеру - открываете оффициальную доку по async и async* и мучаете в дартпаде помаленьку
???????
rxdart не стоит трогать, пока не разберетесь с async* в должной мере. Как разберетесь, c rxdart вообще никаких проблем не будет, с ходу зайдет.
Dmytro Bondarchuk
Хотелось бы общее понятие иметь о реактивщине, Якобы "Реактивщина Get Started" :D
Dmytro Bondarchuk
Вот и спрашиваю, может есть материалы, которые вам помогли очень
???????
[
{
"type": "link",
"text": "https://dart.dev/tutorials/language/streams"
}
]
???????
А я что вам сказал?
???????
Тут А4 текста, по сути есть 2 класса Stream StreamController, ну и в догонку менее интересные StreamSubscription и StreamSink, есть yield и async* и очень важный метод listen и остальные обертки над ним.
???????
Собственно вот все, что надо знать о реактивщине. Беда тут именно в перестраивании мышления, вы просто с ходу этого не осилите, надо постепенно пробывать и мучать на плейграунде
Илья
А есть какой нить тест как определить уже все понял с аинхроностью или нет?
???????
Что такое фукция генератор?
Dmytro Bondarchuk
Беда в том, что я это уже использую в проектах и оно работает Но чувство, что я не правильно это использую Хочеться копнуть глубже) Спасибо за советы)
???????
Так и есть. Все через это проходили)
Fearless Cry
функция с пометочкой async* ?
???????
1) не подсказывай 2) человек сам должен понять это
???????
Вот как поймет, что такое async* и чем yield отличается от yield*, научится применять. Может считать, что разобрался
???????
Малаца, а что такое yield* ?
Илья
Блин такое ещё не пробовал (
Fearless Cry
да тут вроде легко логикой дойти
???????
Это когда ты захочешь из одного генератора вызвать другой) Если на пальцах)
???????
Вот научишься применять, считай, что освоил)
???????
Если на пальцах: у блока есть mapEventToState
Dmitriy
Вопрос по флаттер блок: если нужно получить состояние из блока для инициализации scrollControllera который инициализируется в initState как выйти из этой ситуации?
???????
и без yield* твой mapEventToState будет просто ОГРОМНЫМ посмешищем
Fearless Cry
didChangeDependencies?
Илья
Понял, что ещё ничего не понял. Спасибо
Fearless Cry
[
{
"type": "link",
"text": "http://jpryan.me/dartbyexample/examples/yield_star/"
}
]
Serge Shkurko
У кого-ниубдь есть опыт с dart:ffi ?
Dmitriy
то есть инициализировать контроллер в этом методе?
Fearless Cry
[
{
"type": "mention",
"text": "@ykmnkmi"
}
]
Fearless Cry
ну можно, да
???????
[
{
"type": "mention",
"text": "@ykmnkmi"
},
" ",
{
"type": "mention",
"text": "@kroppli"
}
]
Dmitriy
ок как тогда получать изменение состояния блока?
Fearless Cry
BlocProvider.of() ?
Fearless Cry
Отслеживаете изменение состояния блока вы в BlocBuilder
Serge Shkurko
[
{
"type": "mention",
"text": "@ykmnkmi"
},
" ",
{
"type": "mention",
"text": "@kroppli"
},
" вопрос по ffi\nВот есть к примеру c / cpp библиотеки:\n",
{
"type": "link",
"text": "https://www.sqlite.org/download.html"
},
"\n",
{
"type": "link",
"text": "https://github.com/bblanchon/pdfium-binaries/releases"
},
"\n\nЕсли они НЕ используют системные апи по типу win32 и т.п. какова вероятность их запустить под дартом? Какие могут возникнуть проблемы?"
]
Dmitriy
так в том то и дело что мне нужно получить состояние раньше
Fearless Cry
насколько раньше-то?
Fearless Cry
до первого билда?
Олжас Сулеймен
Самое часто он не может найти либу в системных папках
Fearless Cry
у вас блок лежит в провайдере?
|