Программирование : Dart & Flutter по-русски
tdesc
ничего не мешает на си перегенеривать их
Eugene Alitz
У меня не сработало, если поменять sdk в pubspec.yaml, то анализатор кучу ошибок связанных с null находит
Eugene Alitz
и билд не проходит
Kosmos
Что-то послушаешь чат то и дело все ломается))это точно лучший фрейм?))
tdesc
ломается то что понаписюлькали
tdesc
остальное надо просто мигрировать на 2.0
tdesc
нормально делай, нормально будет
Kosmos
Угу понял спс сорян если что за флуд
tdesc
короткий ответ, да флаттер на данный момент лучший фреймворк для кроссплатформы
Artyom Burkan
Никогда не добавляются
Eugene Alitz
Я помню, когда такая же боль была с RN, когда они выкатывали новую версию. С flutter такого намного меньше
Юджин Баладжахе
[
"Вопрос про flutter_bloc. В большинстве случаев мы получаем state чере BlocConsumer, а ссылку на саму модель через ",
{
"type": "link",
"text": "context.read"
},
"(). То есть в виджете есть и стейт и модель. Стейт содержит данные, модель содержит методы. Но вопрос - куда правильней поместить флаги isWaiting, isError, и прочую служебную информацию. Можно в state, но тогда это будет толстый объект, нужно создавать под него отдельный класс. А можно в модели их оставить, тогда вроде как нарушается красота паттерна. Что думаете?"
]
Пашка
так а почему просто не сделать состояние ошибки?
Илья Максименко
почитайте получше документацию
Юджин Баладжахе
[
"Так и делаю. А также состояние ожидания. Но много тупого кода. А ссылка на модель все равно нужна чтобы методы дергать. С другой стороны, мы можем в стейте хранить ссылку на модель, и тогда не нужно ",
{
"type": "link",
"text": "context.read"
},
"() делать. Круг замкнулся )))"
]
Илья Максименко
[
{
"type": "link",
"text": "bloclibrary.dev"
}
]
Илья Максименко
со всеми примерами
Юджин Баладжахе
Не умничайте, я читал, и пишу строго по примерам. Но много кода получается, хотя конечно меньше чем в других паттернах. Хочется еще сократить))
Anastasi
А как ты его запускаешь?
Eugene Alitz
Насколько я знаю, flutter_bloc это как раз про много бойлерплейт кода
Юджин Баладжахе
))) Да нет, кубиты норм. И с блоками можно извернуться покороче. Но не хочется много велосипедить, потом кому-то сапортить придется...
Eugene Alitz
Я тебя очень понимаю, и как раз по этой причине отказался от flutter_bloc
Илья Максименко
что такое модель?
Юджин Баладжахе
Сам Bloc или Cubit
Илья Максименко
а с каких пор это называется моделью
Юджин Баладжахе
А в пользу чего если не секрет?
Юджин Баладжахе
виноват исправлюсь
Eugene Alitz
Getx (но я не агитирую, если что, а то сейчас налетят гет- хейтеры)
Илья Максименко
а ну тогда хотя бы вопрос понятен
Anastasi
А вот у меня вопрос, кто разрабатывал полноценное приложение - вы выбирали постгрес в качестве бд, или firebase/firestore вполне покрывают все потребности? Очень нужен совет, так как есть много вопросов по тому с чем лучше работать, чтобы проще было)
Илья Максименко
в блоке не должно быть ничего публичного кроме методов которые даются при наследовании от блока
Илья Максименко
соответственно все флаги в стейте
Юджин Баладжахе
firebase только платный, от бесплатного толку мало
Yuriy Yurchenko
95% приложений у меня используют или PostgreSql, или ArangoDb. Firebase для хранения данных - хорошо, если их или пользователей мало. Или есть много денег :D
Илья Максименко
хейтят тех кто говорит что гетх это архитектура
Eugene Alitz
Сильно зависит от кол-ва и типа данных.
Юджин Баладжахе
OK, флаги в стейте, но если Cubit, там же есть публичные методы, ну или в Sink блока мы кладем события, все равно в виджете нужны обе ссылки - стейт и сам BLOC. Как-бы две сущности, уже напрягает ))
Eugene Alitz
Firebase очень быстро становится дорогим
tdesc
поговорите с кем нибудь кто имеет опыт эксплуатации и есть понимание от загрузки по вашему приложению. не стоит делать выбор по советам
Eugene Alitz
Если данные связанные, тогда firebase не стоит. Имеет смысл посмотреть в сторону Hasura
Илья Максименко
ну я и говорил про блок а не про кубит
Юджин Баладжахе
Да весь гугл такой. Надеюсь, с флаттером такого не произойдет ))
Илья Максименко
когда ты делаешь публичные методы/поля в блоке, то теряется его преимущество
Илья Максименко
когда юзаешь кубит не получаешь преимуществ блока
Илья Максименко
например ивенты не проходят через блокобсервер
Илья Максименко
ну вообще там несколько, могу сейчас какие-то не вспомнить
Artem Gubatenko
Подскажите пакеты, с которыми можно сделать перетаскивание объектов. Например, на экране два виджета-таблички с разной инфой, расположенные параллельно по вертикали. Хочу иметь возможность поменять их местами перетаскиванием. Желательно для большинства платформ)
prz
[
{
"type": "bold",
"text": "APNS device token not set before retrieving FCM Token for Sender ID 'dsadsadas'. Notifications to this FCM Token will not be delivered over APNS.Be sure to re-retrieve the FCM token once the APNS device token is set.\n\nКто"
},
"-то сталкивался?"
]
Evgeny Kot
Минутка рекламы от наших друзей
Evgeny Kot
[
{
"type": "text_link",
"text": "??",
"href": "https://telegra.ph/file/805a9f4d2691b3136698f.png"
},
{
"type": "hashtag",
"text": "#event"
},
" ",
{
"type": "hashtag",
"text": "#meetup"
},
" ",
{
"type": "hashtag",
"text": "#Flutter"
},
" ",
{
"type": "hashtag",
"text": "#online"
},
"\n\nАстрологи объявили месяц ",
{
"type": "bold",
"text": "Flutter"
},
" евентов.\n\nКоманда ",
{
"type": "bold",
"text": "GDG Minsk"
},
" не стоит в стороне ??\n\n",
{
"type": "bold",
"text": "Вторник,"
},
" ",
{
"type": "bold",
"text": "23 Марта"
},
"\n",
{
"type": "bold",
"text": "19:00 - 21:00"
},
" (",
{
"type": "bold",
"text": "GMT+03"
},
") состоится ",
{
"type": "italic",
"text": "GDG Minsk Flutter March Meetup"
},
" ??\n\nЭто не будет обычная онлайн-встреча с презентациями и вопросами и ответами??\nНа этот раз мы планируем провести живую сессию с нашими опытными спикерами, которые поделятся своим опытом работы с технологией ",
{
"type": "bold",
"text": "Flutter"
},
", отвечая на вопросы модератора. ??\n\n",
{
"type": "bold",
"text": "?? Модератор"
},
":\n",
{
"type": "text_link",
"text": "Eugene Saturov",
"href": "https://twitter.com/saturovv"
},
", ",
{
"type": "bold",
"text": "Surf, "
},
{
"type": "italic",
"text": "DevRel"
},
"\n\nВ роли спикеров\n?? ",
{
"type": "text_link",
"text": "Majid Hajian",
"href": "https://twitter.com/mhadaily"
},
", ",
{
"type": "italic",
"text": "Flutter, "
},
{
"type": "bold",
"text": "Google Developer Expert"
},
"\n?? ",
{
"type": "text_link",
"text": "Vladimir Ivanov",
"href": "https://twitter.com/vvsevolodovich"
},
", ",
{
"type": "bold",
"text": "Tinkoff, "
},
{
"type": "italic",
"text": "Solution Architect"
},
"\n\n",
{
"type": "bold",
"text": "План"
},
":\n?? знакомство со спикерами\n?? плавно перейдем к общим вопросам о технологии ",
{
"type": "italic",
"text": "Flutter"
},
" \n?? рассмотрим популярные архитектурные шаблоны во ",
{
"type": "italic",
"text": "Flutter"
},
", принципы и недостатки каждого \n?? разберем инструменты, которые доступны прямо сейчас во ",
{
"type": "italic",
"text": "Flutter"
},
"\n?? рассмотрим будущее ",
{
"type": "italic",
"text": "Flutter"
},
" и его конкурентов.\n\nВстречаемся на митапе?"
]
Александр Кузнецов
Ребятки, помогите пожалуйста, может у кого есть пособие почитать по flutter
Anastasi
Есть их не слишком много, то как?
Anastasi
И что значит связанные? Если у меня полноценная бд, где таблицы взаимодействуют друг с другом
Anastasi
Если данных не особо много, но есть разграничение ролей, к примеру, то стоит использовать firebase?
Eugene Alitz
Если таблицы ваимодействуют друг с другом, тогда Firebase меньше подходит. Там слишком много телодвижений лишних нужно будет делать, а лишние телодвижения - лишние запросы, а запросы стоят денег
Anastasi
Бесплатная версия мало что позволяет?
Eugene Alitz
Позволяет довольно много (для небольшого проекта), но со связями у них проблема (база же NoSQL). Поэтому и приходится делать лишние запросы
Eugene Alitz
Если проект небольшой, тогда может и прокатить, но если планируете масштабироваться, тогда не стоит
Yuriy Yurchenko
Можно все сделать и с Firebase, но нужно обратить внимание на максимальное количество подключений/пользователей одновременно (как и на объём базы). Если получится уложиться - хорошо, нет - посмотреть, устраивают ли цены.
nikto _b
Файрбейз это какая-то злая шутка
Yuriy Yurchenko
+1, Firebase хорошо масштабируется при резиновом бюджете
Юджин Баладжахе
Это бесспорно, плюс кубит не имеет входящего стрима и обработка евентов осуществляется в бардачном порядке))
Eugene Alitz
не злая, довольно удобная для маленьких проектов
nikto _b
Я уже второй день не могу включить вход по смс, а искать негде ??
Eugene Alitz
Ага, причем, это может прилететь совсем неожиданно
nikto _b
Все колбэки отработали, смс не пришло
Eugene Alitz
Это скорее проблема плагина для флаттера
Юджин Баладжахе
Полнотекстового поиска нет, да и с обычными запросами проблема.
Anastasi
Понятно, спасибо большое!
Anastasi
Сейчас уже думаю как постгрес подвязывать
Yuriy Yurchenko
У меня стандартно: VPS и на нем PostgreSql + сервисы на Java Spring Boot (на чем быстрее и удобнее мне лично. PHP или что-то ещё будет не хуже). Дальше REST API , Web sockets или что-нибудь ещё, что нужно
Anastasi
Скоро по этим инструментам будет много вопросов)
Anastasi
С ларавел конечно попроще было
Anastasi
Бэк часть уже структуру имела, было понятно как работать
Oleg
Привет нужна помощь. Дебаг версия работает а релизная нет.
Oleg
[
{
"type": "pre",
"text": "import 'package:flutter/material.dart';\nimport 'dart:async';\nimport 'package:http/http.dart' as http;\nimport 'dart:convert';\nimport 'package:cached_network_image/cached_network_image.dart';\n\nvoid main() => runApp(MyApp());\n\nclass MyApp extends StatelessWidget {\n // This widget is the root of your application.\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Demo',\n theme: ThemeData(\n primarySwatch: Colors.blue,\n ),\n home: MyHomePage(title: 'Flutter Demo Home Page'),\n );\n }\n}\n\nclass MyHomePage extends StatefulWidget {\n MyHomePage({Key key, this.title}) : super(key: key);\n\n final String title;\n\n @override\n _MyHomePageState createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State {\n\n List data;\n\n // Function to get the JSON data\n Future getJSONData() async {\n var response = await http.get(\n // Encode the url\n Uri.encodeFull(\"https://unsplash.com/napi/photos/Q14J2k8VE3U/related\"),\n // Only accept JSON response\n headers: {\"Accept\": \"application/json\"}\n );\n\n setState(() {\n // Get the JSON data\n data = json.decode(response.body)['results'];\n });\n\n return \"Successfull\";\n }\n\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n title: Text(widget.title),\n ),\n body: _buildListView(),\n );\n }\n\n Widget _buildListView() {\n return ListView.builder(\n padding: const EdgeInsets.all(16.0),\n itemCount: data == null ? 0 : data.length,\n itemBuilder: (context, index) {\n return _buildImageColumn(data[index]);\n // return _buildRow(data[index]);\n }\n );\n }\n\n Widget _buildImageColumn(dynamic item) => Container(\n decoration: BoxDecoration(\n color: Colors.white54\n ),\n margin: const EdgeInsets.all(4),\n child: Column(\n children: [\n new CachedNetworkImage(\n imageUrl: item['urls']['small'],\n placeholder: (context, url) => new CircularProgressIndicator(),\n errorWidget: (context, url, error) => new Icon(Icons.error),\n fadeOutDuration: new Duration(seconds: 1),\n fadeInDuration: new Duration(seconds: 3),\n ),\n _buildRow(item)\n ],\n ),\n );\n\n Widget _buildRow(dynamic item) {\n return ListTile(\n title: Text(\n item['description'] == null ? '': item['description'],\n ),\n subtitle: Text(\"Likes: \" + item['likes'].toString()),\n );\n }\n @override\n void initState() {\n super.initState();\n // Call the getJSONData() method when the app initializes\n this.getJSONData();\n }\n}",
"language": ""
}
]
Yuriy Yurchenko
Разрешение в манифесте прописано?
Vitaliy Snitko
Подскажите, почему в обычном дарт проекте ANSI цвета работают - вывод в консоль раскрашивается, а во Флаттер ANSI не работает и код цвета выводится вместо раскрашивания?..
Stanislav
gradle, gradle, gradle, gradle...gradle, gradle, gradle, gradle...gradle, gradle, gradle, gradle...
Stanislav
хоспади когда уже вэб сольется с этим дебильным мобайлом никчемным из-за акселерометра и джипиэса ведомым
DVS (Read The F.ng Manual) Studio (NoHello)
1) никогда, смирись 2) расскажи лучше в чем суть этого вопроса в чате про дарт?)
Stanislav
flutter изучаю, неделю настраивал все, то ему это не то то это не то, пока ексампл простой с гитхаба запустишь жесть, да я только на маке и смог запустить, под виндой вообще смерть
Stanislav
под виндой говорит твой процессор не плдходит для вирт устройств
DVS (Read The F.ng Manual) Studio (NoHello)
эмуль что ли пытаешься запустить?
DVS (Read The F.ng Manual) Studio (NoHello)
так это не к флаттеру, это к дроидовцам а еще лучше на реальном теле запускать
Stanislav
ну а как без него? мало того что каждая версия андроида по полтора гига плюс устройства разные, я вот подумал есть ли способ - ставлю комп на закачку террабайта, ухожу из дома на неделю , прихожу и работаю
Stanislav
а в экскпшонах один грейдл постоянно
Kit Khilobok
Нужно иметь сдк для одной версии андроида, под которую будешь собирать У меня весь набор для разработки на винде укладывается в 10гб
Kit Khilobok
А по поводу грэдла, причём тут флаттер совершенно непонятно
Kit Khilobok
Это к нативному андроиду вопросы
Kit Khilobok
За все 3 года разработки на флаттере танцы с бубном были только 1 раз
Kit Khilobok
Ну ладно, ещё были, когда флаттер был в бэте
Kit Khilobok
3.5.0 во всех проектах практически
Kit Khilobok
Разрабатываю и на винде и на маке
nikto _b
Для php у меня кишка тонка
Stanislav
а если гипотетически помтавить себя на место заказчика, абстрагироваться от технтческой составляющей и ты такой ему - нуууу приложение разрабатывалось долго так как разработчик вынужден после каждого изменения во фреймворке флаттер курить по пол часа ( хот релоад - велосипед) и я такой ну ладно, а что делает приложение , нууууу оно джейсон на 3 кб и картинку собачки выводит и заказчик понимая чисто человечески что это операция микросекунд говорит, ну хрень какаято, а ты еиу нууууу понимаете это перспективный фреймворк он еще молодой нуууу там все отрисовывается .... мне некогда, я не хочу этого знать, это хрень, досвидания он говорит
Andrey
может быть руки просто кривые?)
Anastasi
Ситуация - помянем
Артур
без знаков припинания очень грустно
nikto _b
Флаттер продаётся через А) срезку по опыту работы с инструментом Б) срезку на разработке под другие платформы
Anastasi
Да он просто на эмоциях, вы же понимаете
nikto _b
Ну и Жсон на 3кб и картинка собачки - это же дело одного вечера с дебагом
nikto _b
Зачем ходить курить когда все нормально работает - неясно
nikto _b
[
{
"type": "strikethrough",
"text": "Хуевый"
},
" плохой пример"
]
Stanislav
технари друг друга поймут, а бизнес, на который все работает - нет
nikto _b
Стараюсь соблюдать правила сообщества
nikto _b
На самом деле вот те 2 варианта продают
Артур
кстати в репплай не отобразилось, что слово зачеркнуто
nikto _b
Уже не мои проблемы
nikto _b
Чиорт, словил диссонанс Думаю - че я подписан когда это не я пишу
Stanislav
есть паттерн MVC но нет, мы назовем его BLoC
nikto _b
Ну, нет? Может дело в том что у флаттера нет "вью"?
Stanislav
идешь покупать пылесос или кофемашину , узнай сто раз сколько расходников у них, идешь на новый фреймворк, узнай чего будет стоить поддержка
Скерис
подскажите, а как у TextFormField сделать бордер только, допустим, слева?
Stanislav
мистер твистер, бывший министр, владелец заводов, морей параходов - узнал что язык Dart весь ООП, да и пофиг
Артур
осуждаю употребление психоактивных веществ
Kit Khilobok
По опыту, разработка на флаттере при наличии нормальных разработчиков требует меньше ресурсов и времени, чем для любой другой кроссплатфоомы или натива. А то, что вы пишите, это частности, которые касаются в большинстве своем только начинающих, которые не совсем понимают, что, как и куда работает
Kit Khilobok
Я не на рандом это пишу, ибо я один из руководителей студии мобильной разработки
Скерис
ну, что его можно обернуть в коробочку это понятно. я думал можно как то его собственный аутлайн-андерлайн бордеры заставить вести себя прилично
Alex Wow
Мне кажется тут бОльшинство студенты
Stanislav
Долго собирается, вот и вся претензия, с точки зрения руководителя вполне настараживающая
Kit Khilobok
Долго собирается что? Вы когда-нибудь делали до этого мобильные приложения?
Скерис
увы, так и не нашел в inputborder возможность сделать частичную рамку. может, конечно плохо искал...
Артур
Первый билд занимает несколько минут, а хот релоад не занимает и минуты
Артур
что немыслемо быстро
?? ??????????????????????????
А кодоген?
Артур
Не знаю что такое кодоген
Stanislav
Нет не делал, но с учетом того что моб девайс по характеристикам приближается к ПК знать ничего не хочу, 1лошадь = сколькотоВатт
Артур
Пхахахажахажыавпльулпрьвд
?? ??????????????????????????
build_runner, как можно не знать если работаешь с флаттером?
Kit Khilobok
Далеко не все используют кодоген
Kit Khilobok
И многие его используют везде, даже там, где он не нужен)
?? ??????????????????????????
Не использовать и не знать, это разные вещи
?? ??????????????????????????
Сдается мне, уровень вашей компетенции не позволяет вам делать такие пафосные реплики
Артур
Камон, 0 коммерческого опыта
?? ??????????????????????????
Отлично
Dre
как 0, а твой бест селлер to do list?
Dre
разве его не аквайрнул фейсбук за 3 лярда?
Dre
подыграл бы, что за люди
Артур
Зачем мне сидеть в этом чате, если у меня три лярда на киви лежат?
Stanislav
Выйду ночью в поле с конем, мы в гитхаб коммитить пойдем
Андрей Кузьмин
А куда можно на стажировку попасть?
Скерис
да в принципе да, просто не хотелось вертеть столько сущностей ради
Evgeny Kot
[
"И ешё немного интеграций\n\n",
{
"type": "italic",
"text": "Началась регистрация на студенческий онлайн хакатон , который пройдет 19-21 марта. Регистрацию можно пройти на сайте www.hacknu.kz, более подробно о самом хакатоне можно узнать на канале: "
},
{
"type": "link",
"text": "http://t.me/HackNUinfo"
},
{
"type": "italic",
"text": "\nРегистрация закрывается 12 марта"
},
""
]
Newbie Developer
Ребят, так какой ща самый актуальный и "модный" стек в архитектуре? Bloc (провайдер + rxdart) норм или что-то другое? Нет опыта во флатере от слова совсем (могу сверстать формочки и сходить оттуда же в сеть по гугл докам), но есть опыт в нативе. Что в итоге выбрать для первого приложения?
Константин Бобров
Что-то с ссылкой на тг?
Evgeny Kot
пофиксил, спасибо
Скерис
вдруг кому пригодится: пришлось заэкстендить OutlineInputBorder и переопределить там dimensions и paint. но получилось.
Aleksey Kharitonov
[
"Зависит от сложности проекта. Если простое приложение, не более 5 экранов, то пользуй cnangeNotifier. Если сложнее - BLoC\n\n",
{
"type": "link",
"text": "https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple"
},
""
]
Newbie Developer
хочечтся разобраться в технологии, но при этом не просто хэллоу ворлд понял, ща как раз читаю доку блок либы. Значим будем пробовать BLoC
Aleksey Kharitonov
Успехов!
mark
Привет, что делает ! после переменной в null-safety?
Artyom Burkan
Явное разыменование
mark
и если переменная все же null то выбросится exception, верно?
Newbie Developer
Ребят, есть вопрос Разбираюсь сейчас с либой блок, и там в туториал в примерах различные сущности (в текущем случае репозитории) выносят в отдельные "либы" внутри проекта и подключают их к основному пабспеку. Это стандартаня практика или просто так захотели в примере сделать? Если стандартная, то в чем профит? ЧТобы вынести всю бизнес логику в разные места и не было соблазана обращаться "на прямую" ? Или же есть какой-то профит в скорости сборки (как в андроиде грейдлы)?
Пашка
на этом пока внимание не заостряй
Пашка
со временем сам поймёшь что можно выносить в отдельные либы
Newbie Developer
понял, спасибо Тогда буду пока полностью всё повторять
Даниил Левицкий
Скорости сборки изменений в обе стороны нет, судя по эксперименту на медиуме, но например кодогенераци по более узкой папке даёт плюсы
nikto _b
Но отражается ли это на скорости работы - никто не измерял
Даниил Левицкий
Ещё даёт возможность конфигурировать состав модулей между разными сборками аппы, ее например, для разных сторов можно по разному собирать, шарить модули между проектами, более удобно. В особых случаях можно даже в одном проекте держать и сервер и клиент и модулями шарить код
Даниил Левицкий
Я думаю, график скорости работы будет близок к графику скорости работы бекендеров монолит/микросервисы
nikto _b
Это как сравнивать тёплое с мягким
Newbie Developer
о, а это хороший профит. Сразу об этом не подумал
Newbie Developer
спасибо большое
nikto _b
Это все абстрактные кони в вакууме которые не учитывают нюансы
?? ??????????????????????????
Е... и порождают другие нюансы, тут нет плацебо, в каждом проекте наступает момент когда надо делать иначе) просто не все до этого доживают
?? ??????????????????????????
Лучше вообще в это не лезть, если надо будет, сами поймёте)
nikto _b
Логично предположить что ускорение кодогенерации при разбиении на модули достигается переиспользованием генерированного когда А это усложняет оптимизацию И это логичный результат
Даниил Левицкий
Довольно очевидный результат, что монолитный проект сложнее поддерживать при повышении сложности, как и то, что МВП проекта медленнее сделать в модульном подходе
nikto _b
Не могу уложить себе в голову что модулированный проект быстр для прототипов
Даниил Левицкий
Я поправил
Даниил Левицкий
Когда количество файлов выходит за десятки тысяч, ты начинаешь сходить с ума, как от кологенерации, так и от диффов между командой
nikto _b
Очевидный результат
Даниил Левицкий
Поэтому лучше в самом начале что-то делать в одном модуле, но стараться держать в голове модульную архитектуру, проектировать сущности относительно этого и максимально быстро на них перейти
Даниил Левицкий
Если забивать на это, пока само не придёт, при росте проект утонет
RV
тут некоторое есть непонимание что у проекта есть стадии жизненного цикла. И необязательно сразу делать хорошо - возможно проще сделать быстро, а потом выбросить и сделать следующую версию. И это стоит тоже анализировать
|