Статья :: Dart & Flutter по-русски |
Программирование : Dart & Flutter по-русски
Sasha
А в чем его прикол то, если он все равно Dart в JS транспайлит. Для этого тайпскрипт хорош + ангуляр всегда последней версии можешь юзать
Evgenii Elchev
Это давно было придумано, и кажется Гугл забросил эту идею
Олжас Сулеймен
да живой он там пулл вист большой ждет внутренних одобрении
Олжас Сулеймен
и вон выше кидали статьй по зонам и оптимизации АнгулярДарта от самих Wrike админов этого чата которые его же и юзают
mark
Нет, в ишшью есть пост о том что они перенесли разработку фреймворка внутрь гугла, так как вне им мало кто пользуется, настраивают сейчас синхронизацию внутреннего гита с гитхабом
Danila Kalish
Всем привет, изучаю provider, пытаюсь прочитать текст из TextFormFiled и записать его в переменную, но после проверки оказывается что в переменную ничего не записалось, она как была так и остается null. Что я делаю не правильно?
Олжас Сулеймен
[
"а не проще ли setter сделать set email(String value) { ... }\n",
{
"type": "link",
"text": "emailReg.email"
},
" = value;"
]
Roman Vasiliev
Тогда уж ValueNotifier вообще
Юджин Баладжахе
[
"Опять туплю. На флаттере можно создать файл в оперативной памяти как-то так:\n",
{
"type": "pre",
"text": " File file = MemoryFileSystem().file('01.mp4').writeAsBytesSync(blobBytes);\n",
"language": ""
},
"Но плагин камеры принимает на вход не File а просто строку !!! Дайте мне пулемет !!!\n",
{
"type": "pre",
"text": " await _camera.startVideoRecording(filePath)\n",
"language": ""
},
"Вопрос - как заставить камеру писать в память, path_provider тоже не предоставляет ничего подобного (getTemporaryDirectory это тоже флешка), мне наверное на андроид нужно какую-то программу поставить, чтобы она смонтировала папку где-то в общей памяти, и уже потом пытаться достучаться до этой папки через path_provider ?\nPS\nЗавидую айосникам."
]
Evgenii Elchev
Типо камера в файл пишет? Так читай из него на лету)
Юджин Баладжахе
Это интересно, но у меня все виснет на методе stopVideoRecording(), предполагаю что там флашинг, и проблема все равно остается. Насколько удобнее сделано видео в браузере - там как раз предусмотрен режим записи в последовательность блобов, и все бесшовно склеивается, потому что в оперативке делается, без этих файлов.
Evgenii Elchev
Я кстати не помню как оно в ios
Evgenii Elchev
Но вообще, флэшинг должен лежать на плечах системы и железа, ты его замечать не должен даже
Юджин Баладжахе
[
"Вроде ",
{
"type": "mention",
"text": "@nowandever"
},
" писал что /dev/shm это часть фс смаплена в память - не проверял правда"
]
Sergey Salnikov
[
"что за императивщина в декларативном фреймворке?\n\nоборачивай свой прогресс в BlocBuilder\n",
{
"type": "pre",
"text": "builder: (_, state) if state == Loading return ProgressWidget; else return SizedBox.shrink()",
"language": ""
},
""
]
Andrew Vasilevskii
мне он нужен не вместо экрана, а поверх его
Sergey Salnikov
так и есть но как через проcлойку flutter и плагина через channels заставить писать в мемфайл я хз - надо покопать
Sergey Salnikov
stack [ экран, прогресс обёрнутый в билдер ]
Andrew Vasilevskii
окей гляну спасибо
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/Ylo7Vo2DLcE"
}
]
Ulugbek Usmanov
В sceen есть гридвиев через api я получу nested json, когда user нажимает grid я должен в том screene update грид на Json child мне нужно сделать динамик что мне использовать?
Andrey Derkach
можно как-то сделать чтоб в андроид студии подсвечивало новые версии либ, которые можно обновить?
mark
Плагин для интеллидж есть, насчёт студии не уверен Flutter enhancement suite вроде
Andrey Derkach
ага нашёл , ставлю
Andrey Derkach
какие ещё плагины используете?
mark
Все которые имеют слово флаттер ??
Sergey Salnikov
[
"я отключил, если доступ к ",
{
"type": "link",
"text": "pub.dev"
},
" долгий - подвисают все окна студии на время ответа"
]
Sergey Salnikov
просто жми на upgrade packages и если есть что обновить - обновит
mark
Или outdated packages ещё кнопка есть
Dagba
Здравствуйте, хочу сделать rotation карточки во время hero перехода, из горизонтального положения в вертикальный, может кто делал уже?
AlexZander Furmanchuk
[
"Всем привет! Возможно уже поднимали вопрос, но кто нибудь пользовался ",
{
"type": "link",
"text": "https://pub.dev/packages/cubit"
},
" и если да, то есть ли смысл переходить на него с блока?"
]
Семён undefined
не-а, его скоро и так в блок добавят
4??uzhoy .
[
"не пользовал но, в самом блоке с пятой версии ( если про либу феликса ) блок наследует кубитСтрим\n\nabstract class Bloc extends CubitStream\n implements EventSink \n\nи я так понимаю он просто сует стейты в стрим, при помощи метода емит \n\n /// {",
{
"type": "mention",
"text": "@template"
},
" emit}\n /// Updates the [state] to the provided [state].\n /// [emit] does nothing if the [CubitStream] has been closed or if the\n /// [state] being emitted is equal to the current [state].\n /// {",
{
"type": "mention",
"text": "@endtemplate"
},
"}\n ",
{
"type": "mention",
"text": "@protected"
},
"\n void emit(State state) {\n if (state == _state || _controller.isClosed) return;\n _state = state;\n _controller.add(_state);\n }"
]
4??uzhoy .
то есть особо ничего нового, блок но без событий
AlexZander Furmanchuk
ну тогда юзаем дальше блок, и еще вопрос сразу по блоку, у кого какая архитектура, у вас блоки отдельно, репозитории отдельно, или есть папка а в ней скрин,блок, дата слой ?
4??uzhoy .
куча примеров же в либе у него, я обычно генерю блок плагином, отдельная папка репозиторий который управляет дата слоем, сам репозиторий передается в конструктор блока, ну и скрины отдельно, но ты это... никого не слушай как говорится, особенно меня:)
AlexZander Furmanchuk
Да я смотрел пример, и они слишком разные, вроде как надо в папке lib создать папки blocs,models, screens,widgets, и всен блоки пихать в глобальную папку, сами они говорят что архитектура должна быть такая - есть папка типа auth в ней bloc, data, presentation, вот тут наверное и больше вечный вопрос, расти вглубу или в ширину)
Andrew Vasilevskii
мне не по душе идея хранить все блоки в 1 месте, я предпочитаю по папкам скринов разбивать
AlexZander Furmanchuk
я до этого с такой работал
les forest
Тут пожалуй подход такой - чтобы другому разработчику было понятно где что лежит.
AlexZander Furmanchuk
Согласен, для этого либо изначально договориться, либо доку описать
les forest
Да смысл в том чтобы из самой структуры все было понятно
les forest
Без лишней писанины)))
Co. In
[
"Привет. Подскажите как правильно сделать ",
{
"type": "bold",
"text": "env"
},
" файл в dart. Чтоб в дальнейшем добавить его в ",
{
"type": "bold",
"text": ".gitignore"
},
" и можно было конфиги локально переопределить"
]
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/1KodykBE_ss"
}
]
Александр
[
{
"type": "hashtag",
"text": "#вакансия"
},
" ",
{
"type": "hashtag",
"text": "#flutter"
},
" \nПривет!\nИщем на проект разработчика Flutter, делаем приложение cоциальной сети\nТребования:\n- Опыт коммерческой разработки 2+ лет\n- Готовые приложения, которые можно посмотреть\nУсловия: удалённая работа в команде.\nПолная занятость, график - обсуждаемо\nКонтакт: ",
{
"type": "mention",
"text": "@smapstudio"
},
""
]
Юджин Баладжахе
[
"Короче собрал колхозный видеостриминг на голом флаттере, по сравнению с вебом могу сказать, что видео-плагины на тройку с плюсом. Производительность тоже не лучше чем под хромом на чистом JS. Конкретные претензии:\n1) Плагин Camera не умеет писать в память, а только в файл. Не умеет на ходу менять приемник, то есть записать непрерывную серию видосиков не получится - оно будет моргать и дергаться.\n2) Плагин VideoPlayer не умеет читать из MemoryFileSystem, то есть опять файлики на флэш-памяти и тормоза.\n3) Этот же плагин не умеет регулировать скорость воспроизведения, значит не удасться сделать нормальную буферизацию стрима.\n4) Все это НЕ работает на старых устройствах, а PWA работают везде где работает Хром.\nPS\nИ все равно этот флаттер красивая игрушка, может через годик и вакансии на нем появятся, и недостатки починят. На всякий случай выложил код, вдруг кому пригодится. Простите, это мой первый блин, детям не показывать.\n",
{
"type": "link",
"text": "https://github.com/balajahe/cctv_mobile"
},
""
]
Batyrzhan uulu
[
"Ребята всем привет как задать равномерные параметра и сделать текст на две строки. overflow and textAlign или не работают или как то нетправильно использую\n“””\nButtonTheme(\n minWidth: 150.0,\n height: 50,\n child: RaisedButton(\n color: Colors.",
{
"type": "italic",
"text": "white"
},
",\n child: Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: [\n Icon(Icons.",
{
"type": "italic",
"text": "account_balance_wallet"
},
", color: Color(0xFF00AB50),size: 20.0,),\n Text('Бонусы за покупки',\n textAlign: TextAlign.justify,\n overflow: TextOverflow.ellipsis,\n maxLines: 2),\n ],),\n elevation: 4.0,\n onPressed: (){},),\n),\n“””"
]
Dmitriy
Привет ребята, кто реализовывал фаербейз клауд месседжинг, вопрос по добавлению баджа иконки для IOS и возможноли ли, чтобы система сама подсчитывала количество сообщений в нем?
Oleg Pchelkin
как сами кнопки добавляешь? оберни в expanded
Batyrzhan uulu
Пробовал и expanded, container
ilx13
[
{
"type": "bot_command",
"text": "/stat@combot"
}
]
Combot
Total messages: 225391
4??uzhoy .
The best and the biggest community management service for Telegram groups. Moderation, analytics, triggers, etc.
Oleg Pchelkin
кинь код, должно работать expanded, может внешний контейнер рубит что то? А по поводу 2 строк - тут только через \n, автоматом ему незачем переносить
AlexZander Furmanchuk
Всем привет, пытаюсь использовать Dio для запросов, говорят что прям хороший. Но при ошибки от сервера падает вот такое исключение, хотя запрос обернул в try catch on DioError
AlexZander Furmanchuk
это нормально или надо как то еще обрабатывать?
Урусай
Это какой-то баг, я тоже с этим сталкивался
AlexZander Furmanchuk
А как бороться?
Gorohov Valeriy
[
{
"type": "link",
"text": "https://pub.dev/documentation/dio/latest/dio/BaseOptions/validateStatus.html"
}
]
Урусай
По моему этот баг проявляется только в дебаг режиме, есть issue на гитхабе на тему
Урусай
Не в этом дело. А в том что исключение не ловится
AlexZander Furmanchuk
Ну тоже как то не кайфово, разрабатываешь и тебе такое летит
Урусай
Dio на самом деле весь на костылях. Я много намучался с ним
Gorohov Valeriy
У меня try-catch нормально обрабатывает исключения по статусам.
AlexZander Furmanchuk
А что лучше? просто http
Gorohov Valeriy
Но последнее время я делаю валидными все статусы, и сам уже их обрабатываю.
Dmitriy
простой http хватает для большинства задач, и да в том коде, что вы привели необязательно throw использовать)
Sergey Salnikov
добавь ещё ветку catch без указания типа и посмотри что туда падает в дарте можно кидать любой объект
admin
[
"You can find every type of demo apps,Templates, Widgets, that you want. with flutter awesome website.\n\n",
{
"type": "hashtag",
"text": "#Resource"
},
"\n",
{
"type": "hashtag",
"text": "#Website"
},
"\n\n",
{
"type": "link",
"text": "https://flutterawesome.com/"
},
"\n\nJoin us ???? ",
{
"type": "mention",
"text": "@Flutter_Updates"
},
""
]
AlexZander Furmanchuk
Туда не доходит, остаётся на DioError Если в опциях добавить функцию для dio.options.validateStatus и вернуть тру, тогда ошибки не падает, но и запрос считается валидным, если только в нём разруливать по статусу
AlexZander Furmanchuk
но тоже такое сее
Sergey Salnikov
смотри что в исходниках dio судя по скринам он тебе специально выбрасывает обёрнутый http респонс
Batyrzhan uulu
Спс, как в голову не пришло перенос строки с \n. Это уверен в е исправит
John
Подскажите как реализовать подобную смену цвета текста в зависимости от цвета фона.
4??uzhoy .
[
"что то не то, у меня отлавливаются ошибки дио, если нет то просто ексепшн \n",
{
"type": "code",
"text": "on ConnectionException catch (error, stacktrace) {\n l.s(\"ConnectionException в report_bloc error: $error\");\n yield NetworkException(\n error: error.toString(),\n stacktrace: stacktrace.toString(),\n );\n } on DioError catch (error, stacktrace) {\n l.s(\"DioError в report_bloc error: $error\");\n switch (error.type) {\n case DioErrorType.CONNECT_TIMEOUT:\n yield ReportError(\n error:\n error.toString() + \"\\n\" + error.response.data.toString() ?? \"\",\n stacktrace: stacktrace.toString(),\n );\n break;\n case DioErrorType.SEND_TIMEOUT:\n yield ReportError(\n error:\n error.toString() + \"\\n\" + error.response.data.toString() ?? \"\",\n stacktrace: stacktrace.toString(),\n );\n break;\n case DioErrorType.RECEIVE_TIMEOUT:\n yield ReportError(\n error:\n error.toString() + \"\\n\" + error.response.data.toString() ?? \"\",\n stacktrace: stacktrace.toString(),\n );\n break;\n case DioErrorType.RESPONSE:\n yield ReportError(\n error:\n error.toString() + \"\\n\" + error.response.data.toString() ?? \"\",\n stacktrace: stacktrace.toString(),\n );\n break;\n case DioErrorType.CANCEL:\n yield ReportError(\n error:\n error.toString() + \"\\n\" + error.response.data.toString() ?? \"\",\n stacktrace: stacktrace.toString(),\n );\n break;\n case DioErrorType.DEFAULT:\n yield NetworkException(\n error:\n error.toString() + \"\\n\" + error.response.data.toString() ?? \"\",\n stacktrace: stacktrace.toString(),\n );\n break;\n }\n } on Exception catch (error, stacktrace) {\n l.s(\"Exception в report_bloc error: $error\");\n yield ReportError(\n error: error.toString(),\n stacktrace: stacktrace.toString(),\n );\n } on StateError catch (error, stacktrace) {\n l.s(\"StateError в report_bloc error: $error\");\n yield ReportError(\n error: error.toString(),\n stacktrace: stacktrace.toString(),\n );\n }\n }"
},
""
]
Олжас Сулеймен
в вебе это делать два элемента и белый заворачивать в контейнер тут то же самое
4??uzhoy .
какая версия дио?
John
Надо сделать два полностью идентичных элемента, наложить поверх друг-друга и менять ширину верхнего элемента. Я правильно понял?
John
Окей. Попробую, но не будет ли у верхнего элемента текст съезжать когда ширины не будет хватать?
4??uzhoy .
есть пакет прогрес бар, там вроде что то похожее
Олжас Сулеймен
с заданной шириной было бы попроще
4??uzhoy .
[
"обманул чуть чуть \n",
{
"type": "link",
"text": "https://pub.dev/packages/percent_indicator"
},
""
]
Dmitriy
Привет ребята, кто реализовывал фаербейз клауд месседжинг, вопрос по добавлению баджа иконки для IOS и возможноли ли, чтобы система сама подсчитывала количество сообщений в нем?
northelks
зато стейт менеджменты пишут уже второй год! ??
northelks
p.s. тоже в своё время намучался с камерой и фото/видео в целом на флаттере (год назад)
Юджин Баладжахе
[
"Точно. Все реактовые фишки затянули на флаттер, только непонятно зачем. Вот и хуки уже появились. Я еще понимаю зачем они в реакте - функциональные компоненты, tree shaking, и все такое, но флаттер, который строго на классах, где уже есть ",
{
"type": "link",
"text": "context.watch"
},
"() и ",
{
"type": "link",
"text": "context.read"
},
"() - ну зачем мне еще какой-то useContext() использовать. По дарту - год назад тестировал его линукс VM в сравнении с JS V8 - так дарт получился в три раза медленней. Допускаю, что на мобиле из-за AOT он будет таки быстрее webview, но руки чешутся сравнить производительность нейронной сети (у меня есть готовый пример для tensorflow.js), чтобы уж точно поставить диагноз."
]
northelks
+1 в тему реакта
northelks
насчёт дарта - попробуйте запускать с aot
northelks
[
{
"type": "link",
"text": "https://dart.dev/tools/dart2native"
}
]
Vladimir Ivanov
народ, привет, а кто-то интегрировал flutter_audio?
Vladimir Ivanov
у меня иос апп не собирается с ним =((
Юджин Баладжахе
О, не знал, спасибо !
northelks
ну а сравнивать дарт вм и джс в8 пока ещё не так честно, потому что у v8 овер очень много лет разработки с большим количеством людей в команде)
northelks
дайте дарту время, всё будет по красоте) со временем
Юджин Баладжахе
Я вообще не понимаю гугловцев - ну сдался им этот древний неудобный дарт, взяли бы уж котлин, и синтаксис поприятнее, и нативно компилируется (правда через LLVM).
Павел Середа
что? котлин в нативщину компилируется? Это ж jvm поделие которое == java
Павел Середа
не забывайте что у них есть свой замечательный ЯП - golang, но раз они выбрали создавать dart, то видимо были на то какие-то причины
northelks
ну и если про тензерфлоу ещё сказать, он ведь не запускается прямо вот в джс ?? изначально, был tensorflow, потом появился облегчённая версия как tensorflow lite потом появился и tensorflow.js, но изначально это была deeplearn.js ну а если к сути, tensorflow.js использует webgl для доступа к GPU для работы то бишь, по сути, v8 здесь не особо задействован ??
northelks
дарт это своё родное, его крути верти как хочешь
Юджин Баладжахе
[
"Я еще год назад игрался с нативом, получались такие унылые тормоза как и Scala Native, но чем черт не шутит, язык приятный, и взлетел, могут и допилить. Компилятору то без разницы в какой бэкэнд байт-код сливать - в JVM или LLVM, точнее разница есть, но она преодолимая\n",
{
"type": "link",
"text": "https://kotlinlang.org/docs/reference/native-overview.html"
},
""
]
northelks
потому что дарт хорошо дружился с архитектурой флаттера и у дарта есть дарт вм - а это килер фича хот релода всей флаттер разработки
northelks
у го такого нету - то, с чем можно на нём сделать хот релод (на сколько я знаю, но могу ошибаться)
Павел Середа
взлетел? Пфф, котлин взлетел только для любителей джет брейнса, даже в гугле помоему его языком не считают, хоть и заявляют публично что это что-то нормальное. Я лично считаю его унылым поделием от которого нужно держаться подальше. Почему гугл не захотели объединиться с аппле и развить свифт для андроида? От этого все только бы выиграли
northelks
у дарта есть ффи, а это огромный простор фантазий плюс есть aot а с котлином будут танцы с бубном по поводу jvm/llvm
northelks
гугл кстати перетянул в свои ряды создателя свифта для продолжения работы над tensorflow, где будут больше сил уделять свифту ??
northelks
потому что он больше подходит для данного домена задач, как нейронки
northelks
плюс гугл это мультикомандная комания, в отличии от яблока и майкрософт, где мейнстрим задаётся верхушкой, если это свифт - то свифт везде, если си шарп - то си шарп везде
Юджин Баладжахе
[
"Да, только webgl похоже не работает на мобильниках, по крайней мере бюджетных. У меня при распознавании получались лаги в 2 секунды, и это при том что нейросетка в отдельном воркере крутилась. Вот работающая демка, думаю повторить на флаттер Tflite, вот будет тема для холиваров )))\n",
{
"type": "link",
"text": "https://github.com/balajahe/balajahe.github.io/tree/master/cctv_nn"
},
""
]
Павел Середа
это лишь "охуительные истории", не более, если появится нормальная поддержка свифта для дроида - будет здорово. А если они объеденятся с аппле что б сделать какой-то общий фреймворк для UI, вот это было бы действительно здорово, но такого к сожалению не будет :/
northelks
бюджетные мобилки и вебгл это давняя боль)) поэтому мечта написания игрушек на джс провалилась в сфере мобилок
Павел Середа
как же это без сишарпа МС запилили опенсорс vscode? ;)
northelks
вебгл на самом компьютере уже грузит проц за 100%, не говоря уже о мобилках
northelks
а вы почитайте про тайпскрипт)
Павел Середа
а, нехочу :)
northelks
и откуда у него корни)
Evgenii Elchev
не появится, они хотят свой язык, это же понятно
northelks
а vscode - это ещё и другая причина, новый курс нового главы майкрософта
northelks
они стали более открытые, более дружелюбные, более за опенсорс
northelks
поэтому и вкладывают столько сил в vscode - потому что это перетягивает огромное количество людей в плане лояльности в их сторону
northelks
это не нужно ни одной стороне, ни другой)
Юджин Баладжахе
Я так и понял, с одной стороны им нужна VM для хот-релоада, с другой стороны они не могут взять Typescript + V8 потому что у него в рантайме стираются типы. Остаются варианты LLVM, WASM или свой велосипед пилить. Видимо поэтому и дарт. Хотя строго говоря не уверен, что для хот-релоада им нужны рантайм-типы, тут я слаб.
Oleg Pchelkin
[
"Для страждущих\n",
{
"type": "link",
"text": "https://flutter.dev/docs/resources/faq#why-did-flutter-choose-to-use-dart"
},
""
]
Oleg Pchelkin
ага, свифт можно юзать помимо разработки на ios/macos, но вот только в реальности этим занимаются только самые упоротые почитатели свифта (и я думаю что неспроста)
Павел Середа
так и есть, но ЯП уже придуман, и, очевидно, он будет развиваться усилиями яблочной компании
Hellomik
хай кто реализовал news feed для всех стран с приоритетами на firebase, есть много реализаций и сложно выбрать одну
Hellomik
Кто какие советы может дать?
Oleg Pchelkin
Вот только он будет работать исключительно в рамках компании и исключительно потому что яблоко так сказало. Найти документацию по новым апи на objc невозможно уже года 4 как. А по сути - тот же котлин (ну или котлин - тот же свифт) +-
Evgenii Elchev
то что для хот релоада нужна vm это не совсем верно, я не знаю подробностей, но в SwiftUI, как то запили хот релоад, хотя там нет vm и рефлексии
Evgenii Elchev
это очень строгий компайл тайм зяык
Evgenii Elchev
оно правда не так работает как в дарте, не на девайсе, а в специальном контейнере и только в статике
Evgenii Elchev
потому что поддержки нет, ide на linux нет, стандартную ибилиотеку apple так и не дописал, SLP не дописали
Evgenii Elchev
кажется что apple лицемерят когда говорят что хотят пропушить swift за пределы своей экосистемы, потому что говорят, но почти ничего не делают
Evgenii Elchev
и меня то сильно печалит, потому что swift бесконечно крутой язык
Andrey Derkach
дарт тоже ничего
neikist
То то гугл на нем Compose пилит и назвал его приоритетным языком для андроид разработки))
Evgenii Elchev
его же плюсовики и хаскелисты пишут, по сути swift это современные плюсы
Oleg Pchelkin
В рамках ios разработки - да)
Evgenii Elchev
сори но нет, в дарте нет ничего что бы его прямо выделило на фоне других языков
Evgenii Elchev
язык оценивается не в рамках области. Он просто язык, я бы на нем мог и бек и скрипт написать, писал собственно
Evgenii Elchev
а что в них особенного?
Evgenii Elchev
у дарта есть амбиции, но пока это только амбиции)
Юджин Баладжахе
Вот вот. В мире уже достаточно и виртуальных машин, и компиляторов, и языков. У дарта есть фундаментальные проблемы, не позволяющие ему выбиться в топ: - леворукие типы - слабая поддержка ФП (например if() {} не является выражением, блок не является выражением, необходимость везде писать return и так далее).
Oleg Pchelkin
Этож только для SwiftUI? в остальных местах же не работало или что то изменилось?)
Evgenii Elchev
да только для него, и ограниченно (писал выше) но сделали же
Evgenii Elchev
думаю стояла бы задача они бы полностью сделали)
Evgenii Elchev
в дарте тоже хот реалоад частенько не помогает и приходится делать хот рестарт
Yaroslav
Можно написать экстеншн и он и с uikit заработает
Evgenii Elchev
потому что хот релоад обновляет только верстку, но не состояние которое храниться не в дереве
Oleg Pchelkin
ну хз - думаю если б было все так просто - то они сделали б - мегаудобная фича)
Evgenii Elchev
там хуже, я проверял)
Evgenii Elchev
ну они сделали для верстки, решили что хватит) как я сказал во флаттере мне тоже приходится перезагружать приложение, потому что состояние не сбрасывается
Evgenii Elchev
пути apple не исповедимы(
Evgenii Elchev
xcode говно уже который год
neikist
В нативном андроиде по сути подобное тоже давно уже есть. Раньше сторонними средствами делалось, сейчас в студию встроили. Через класслоадер новые классы подгружаются взамен старых.
Evgenii Elchev
и его не хотят делать лучше, потому что их позиция "мобильные приложения должны быть простыми, а для простых приложений не нужна хорошая ide"
neikist
Работает не ахти, но есть
admin
Интересная идеология, зачем вообще тогда XCode, можно было vim официальной средой разработки сделать
Юджин Баладжахе
Поэтому надо состояние хранить в дереве, Provider наше все )))
Andrey Derkach
какой именно Provider - ChangeNotifierProvider?
Evgenii Elchev
не, мобильное приложение должен мочь сделать любой, нажал кнопку в маркете, сказал xcode, накидал мышкой стандартных кнопок и полетело все
Oleg Pchelkin
Оно вреде никогда не было не говном)
admin
Так чтобы изменения в каком либо классе через хотрелоад подгружать надо же debugFillProperties реализовать
Evgenii Elchev
я реально в xcode на колене собрал аналог своего флаттерского приложения за час
Evgenii Elchev
и это тоже грустно
Oleg Pchelkin
Ну есть AppCode
Evgenii Elchev
и он тоже говно к сожалению
Evgenii Elchev
это вот вообще не как идея
Юджин Баладжахе
Ну да, а что, не работает ?
Oleg Pchelkin
Ну хз - не идея конечно, но хотя бы удобнее чем XCode, но это на мой взгляд)
Evgenii Elchev
Не удобнее, у него полно проблем которые не дают нормально работать
Evgenii Elchev
У меня куплены все продукты жб)
Илья Азорин
Добрый день, есть вопрос по паттерну bloc и его пакету flatter_bloc, вопрос про навигацию. Сам уже излазил весь инет, но так и не понял как правильно сделать один момент, есть тестовый пример для упрощения понимания проблемы, сможет кто помочь?
DVS (Read The F.ng Manual) Studio (NoHello)
[
{
"type": "italic",
"text": "don't ask to ask, just ask"
}
]
??†e???
[
{
"type": "link",
"text": "https://habr.com/ru/company/surfstudio/blog/511330/"
}
]
Олжас Сулеймен
[
{
"type": "link",
"text": "https://dartpad.dev/c2d01ccbfc71a96884bf07bd78cda7c2"
}
]
Илья Азорин
ок, взял пример авторизации из гита flutter_bloc. И добавил еще одну страницу со своей логикой и состояниями. И например на этой странице я так же хочу сделать кнопку логаута как на странице home. Как нужно правильно сделать навигацию из home->CurrentProjectPage, чтобы на второй тоже работало событие логаута и сменялось окно. Судя по логам событие проходит, AuthBloc меняет состояние, но окно не обновляется поскольку остается currProjectPage. Вот какое дерево виджетов получается в итоге:
Kirill Aparin
Как установить расширение для Android Studio для создания Bloc классов
4??uzhoy .
поставить плагин?
4??uzhoy .
от феланджела 1.8
Sulaimos Start/Web.dev.Android
Привет ребята подскажите не запускается эмулятор в vscode/
Sulaimos Start/Web.dev.Android
текст ошибка No suitable Android AVD system images are available. You may need to install these using sdkmanager, for example: sdkmanager "system-images;android-27;google_apis_playstore;x86"
Hellomik
Запусти его тогда в начале на android studio
Batyrzhan uulu
[
"“””\nvar fourButtons = Container(\n child: Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: [\n Column(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: [\n ButtonTheme(\n minWidth: 100.0,\n height: 50.0,\n child: RaisedButton(\n color: Colors.",
{
"type": "italic",
"text": "white"
},
",\n child: Row(\n mainAxisAlignment: MainAxisAlignment.spaceBetween,\n children: [\n Icon(Icons.",
{
"type": "italic",
"text": "local_shipping"
},
", color: Color(0xFF00AB50), size: 20.0,),\n Padding(\n padding: EdgeInsets.only(top: 5.0),\n ),\n Text('Доставка\\nдень в день',\n textAlign: TextAlign.justify,\n overflow: TextOverflow.ellipsis,\n maxLines: 2),\n ],),\n elevation: 4.0,\n onPressed: (){},),\n ),\n Padding(\n padding: EdgeInsets.only(top: 10.0),\n ),\n ButtonTheme(\n minWidth: 150.0,\n height: 50.0,\n child: RaisedButton(\n color: Colors.",
{
"type": "italic",
"text": "white"
},
",\n child: Row(\n mainAxisAlignment: MainAxisAlignment.spaceBetween,\n children: [\n Icon(Icons.",
{
"type": "italic",
"text": "next_week"
},
", color: Color(0xFF00AB50),size: 20.0,),\n Padding(\n padding: EdgeInsets.only(top: 5.0),\n ),\n Text('Возможность\\nвозврата',\n textAlign: TextAlign.justify,\n overflow: TextOverflow.ellipsis,\n maxLines: 2),\n ],),\n elevation: 4.0,\n onPressed: (){},),\n ),\n ]\n ),\n Padding(\n padding: EdgeInsets.only(top: 10.0),\n ),\n Column(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: [\n ButtonTheme(\n minWidth: 150.0,\n height: 50.0,\n child: RaisedButton(\n color: Colors.",
{
"type": "italic",
"text": "white"
},
",\n child: Row(\n mainAxisAlignment: MainAxisAlignment.spaceBetween,\n children: [\n Icon(Icons.",
{
"type": "italic",
"text": "credit_card"
},
", color: Color(0xFF00AB50),size: 20.0,),\n Padding(\n padding: EdgeInsets.only(top: 5.0),\n ),\n Text('Все выди\\n оплаты',\n textAlign: TextAlign.justify,\n overflow: TextOverflow.ellipsis,\n maxLines: 2),\n ],),\n elevation: 4.0,\n onPressed: (){},),\n ),\n Padding(\n padding: EdgeInsets.only(top: 10.0),\n ),\n ButtonTheme(\n minWidth: 150.0,\n height: 50,\n child: RaisedButton(\n color: Colors.",
{
"type": "italic",
"text": "white"
},
",\n child: Row(\n mainAxisAlignment: MainAxisAlignment.spaceBetween,\n children: [\n Icon(Icons.",
{
"type": "italic",
"text": "account_balance_wallet"
},
", color: Color(0xFF00AB50),size: 20.0,),\n Padding(\n padding: EdgeInsets.only(top: 5.0),\n ),\n Text('Бонусы \\n за покупки',\n textAlign: TextAlign.justify,\n overflow: TextOverflow.ellipsis,\n maxLines: 2),\n ],),\n elevation: 4.0,\n onPressed: (){},),\n ),\n ]\n )\n ],\n ),\n);\n“””\n\nВообщем не получаеться оно сделать прилично"
]
Sergey ??
Привет всем, а в каком формате вы графику экспортите SVG или PNG ? Я из веба пришел и у нас SVG принято юзать, удивился когда услышал от мобильного разработчика, что принято использовать PNG в @2 @3 разрешениях.
Дмитрий Андриянов
Я в SVG.
Дмитрий Андриянов
Использую для этого Flutter SVG.
Урусай
А какую графику? Всякие иконки и прочую геометрию конечно же в svg
Дмитрий Андриянов
PNG только в тех случаях, когда SVG не вывозит.
John
а он в цветные SVG умеет? Решил попробовать svg установил websafe_svg а иконки чёрные.
Sergey ??
Иконки, объекты, рисуночки. Ну вообщем все что может быть в SVG экспортировано
Урусай
у SVG и PNG же вообще разный спектр применений
|
|
|