Программирование : Dart & Flutter по-русски
Serge Shkurko
Но в чем большой + bloc в отличии от redux это ограниченный скоп данных редакс подразумевает один общий на все приложение
Serge Shkurko
так же редакс часто отмечают избыточным в плане количества кода с чем я полностью согласен
les forest
Для локального scope можно использовать provider
Serge Shkurko
но если залезть под коробку редакса подразумевается что есть 1 большой объект стейста
Serge Shkurko
который при диспаче экшенов копируется с измененными данными из пэйлода
Serge Shkurko
это подразумевает что из любой части приложения можно получить доступ к любым данным из стейта
Serge Shkurko
я не говорил что они идентичны)
Ivan Dembicki
Ничего не понравилось, написал свой.
Serge Shkurko
про мобкс вообще ничего плохого не сказал
les forest
Mobx умеет в persistent state?
Serge Shkurko
поделишься?
Ivan Dembicki
Обязательно, как только причешу.
Max
Я вот собираюсь делиться своим. На следующем DartUp)
Serge Shkurko
[
"вот есть одна штука в bloc которая раздражает именно по синтаксису\n",
{
"type": "pre",
"text": "(_, state) {\n if (state is State_1) {\n\n } else if (state is State_2) {\n \n } else ...\n\n}",
"language": ""
},
""
]
Serge Shkurko
Знаю что существует библиотека типа sealed
Serge Shkurko
или как-то так называется
Serge Shkurko
[
"она позволяет сделать так:\n",
{
"type": "pre",
"text": "state1: () {}\nstate2: () {}\nstateN: () {}",
"language": ""
},
""
]
Serge Shkurko
хотя немного не так
les forest
Можно же switch
Serge Shkurko
((state1) {}, (state2) {}, (stateN) {})
Serge Shkurko
позиционными аргументами
Serge Shkurko
но обязательно инициализировать функции для всех состояний стейта
Serge Shkurko
тем самым не обыграть когда надо только 2 состояния
Ivan Pavlov
Я для State Management выбрал RxDart, есть очень простой BehaviorSubject.
Serge Shkurko
так или иначе избыточно получается лично на мой взгляд
Ivan Pavlov
Есть ли способ сбросить все экраны (массовый Navigator.pop) и вернуться на главный экран?)
Serge Shkurko
чем меньше кода тем меньшая вероятность ошибиться ??
Serge Shkurko
[
{
"type": "link",
"text": "https://github.com/felangel/sealed_flutter_bloc#use-sealedblocbuilder"
},
"\n\nесли что вот доп инфа"
]
Serge Shkurko
либа от создателя либы bloc \ flutter_bloc
Ivan Pavlov
[
"Нашёл в документации к фреймоврку)\nNavigator.popUntil(context, ModalRoute.withName('",
{
"type": "bot_command",
"text": "/login"
},
"'))"
]
Ivan Pavlov
Кто-нить в курсе, почему на эмулятор в Google.Play не находится Flutter Gallery?
Serge Shkurko
[
"Рекомендую \"Flutter Gallery\"\n",
{
"type": "link",
"text": "https://play.google.com/store/apps/details?id=io.flutter.demo.gallery"
},
""
]
Serge Shkurko
А ссылка там откроется?
Sergey ?
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/43005#issuecomment-543836138"
},
"\n\n> Only debug builds of x86 are supported"
]
northelks
а как ренедрите обновления? через setState?
northelks
я тоже использую rxdart, только ещё в связке с provider
northelks
это флакс/редакс тяжёлое наследие
les forest
А что тяжёлого в том что ты в одном месте обрабатываешь изменение состояния?
Serge Shkurko
Смотря какая задача требуется
Serge Shkurko
Например если что-то надо менять используя листенер скролл контроллера лучше создать стрим
Serge Shkurko
И в нужном месте streamBuilder поставить
Serge Shkurko
Чем перерисовывать весь виджет через setState
Teymuraz Safarov
Народ хелп., не ищет тел, хотя подключил и все сделал как нужно
?
режим разработчика и отладку по usb включил?
Ivan Pavlov
Для стримов, есть StreamBuilder. StatefullWidget вообще не нужен.
Maxim Terehov
Как такое может быть? Везде там стоят FutureBuilder и RefreshIndicator.
Maxim Terehov
В дебаге всё окей работает, как на физическом устройстве, так и на эмуляторе
Maxim Terehov
А вот с релизной версией не так
Maxim Terehov
Кто-нибудь сталкивался может быть с таким
Maxim Terehov
При этом код вылизан донельзя, ошибок в консоли нет вообще
Serge Shkurko
а что там за виджеты?
Serge Shkurko
какая версия фльаттера?
Max
Мучились тоже с разницей между релизной и дебажной сборками. Так и не выяснили толком, в чём было дело и что в конечном счёте помогло. Но тут, по картинке судя, возможна "гонка".
Max
Если на рендеринг влияют два асинхронных события, и они могут происходить в разном порядке...
Serge Shkurko
Если там есть хоть что-то платформозависимое то теоритически проблема может быть с proguard
Maxim Terehov
на других экранах такое же
Maxim Terehov
сейчас отвечу
Serge Shkurko
[
"Кто-нибудь знает можно ли во flutter приложении сделать вызов бинарного файла на андройд?\nвот код на kotlin ",
{
"type": "link",
"text": "https://github.com/ScerIO/PocketMine-MP-Android/blob/master/server/src/main/java/io/scer/pocketmine/server/Server.kt#L65"
},
" который точно позволяет это сделать"
]
Serge Shkurko
[
"понимаю что в дарте есть ",
{
"type": "link",
"text": "https://api.dart.dev/stable/2.7.1/dart-io/Process-class.html"
},
""
]
Maxim Terehov
flutter: v1.12.13 внутри ListView находятся Container -> Material -> InkWell->Card
Maxim Terehov
Внутри которых уже выводятся данные
Serge Shkurko
Но у кого-нибудь есть реальный опыт ил предположения?
Serge Shkurko
с хотфиксами?
Maxim Terehov
поясни по поводу гонки
Maxim Terehov
как проверить?
Maxim Terehov
v1.12.13+hotfix.5
Maxim Terehov
Я так понимаю да
Serge Shkurko
можешь скинуть сборку приложения ?
Serge Shkurko
проверял на других устр-вах?
Maxim Terehov
Тестировал на эму Nexus 5, физик s9+
Max
Сразу же ниже описал. К примеру, какие-то настройки приходят позже данных сервера, а ты их используешь для обработки серверных данных.
Maxim Terehov
у меня там стоит проверка на ConnectionState.done
Maxim Terehov
Только после этого отрисовка идет
Maxim Terehov
Я так понимаю это должно было решить проблему гонки
Max
Ну, это то, что приходит в голову, когда от условий меняются результаты работы одного кода. Если гонку можно исключить - значит, нужно искать другую причину
Maxim Terehov
Угу, было бы радостно если бы предположения оправдывались
CrazyAlarmClock
[
"Ребят, кто может подсказать с локализацией DatePicker? а то вроде все делаю правильно, но ошибки. (",
{
"type": "link",
"text": "https://codeshare.io/5w1Ppp"
},
")"
]
Serge Shkurko
кажется нашел решение твоей проблемы
Maxim Terehov
поделись) другим я думаю тоже будет интересно
Serge Shkurko
[
{
"type": "pre",
"text": "android\\app\\src\\main\\AndroidManifest.xml",
"language": ""
},
"\n\n",
{
"type": "pre",
"text": " ",
"language": ""
}
]
Maxim Terehov
я об этом не думал
Serge Shkurko
вот вот, добро пожаловать в мобильную разработку :)
Maxim Terehov
welcome так welcome
Serge Shkurko
сам несколько лет фронтендил и немного запарился при переходе, но в целом доволен
Maxim Terehov
ну я бекендлю)
Maxim Terehov
во фронт даже не лазил особо
Maxim Terehov
А сейчас решился
Serge Shkurko
пайтон \ пыха?
Maxim Terehov
3 года на ней проработал
Maxim Terehov
а сейчас и человек захотел апишку на пыхе
Maxim Terehov
и приложение
Maxim Terehov
и я счастлив и новое выучить рад
Serge Shkurko
начинал с пыхи но она так не понравилась
Serge Shkurko
года 2 с ней игрался
Serge Shkurko
но не с сайтами
Maxim Terehov
я много с чем переигрался за это время
Serge Shkurko
а новое учить всегда полезно, на флаттер пересел когда у него версия была 1.0 и благодарю нему и увлеченности работой в москву переехал из региона
Serge Shkurko
за это сильно его люблю
Serge Shkurko
ну и + это конечно тонны синтаксического сахара после работы с противным легаси es5 при разработке сайтов и в основно использования на работе JS (а не TypeScript) это прям радует душу
Maxim Terehov
это классно, ну я на пыхе тоже в мск работал, сейчас ушел, решил пойти доучиваться
Serge Shkurko
[
"Кстати, разрабатываю пакеты для флаттера и дарта так что лайки, пулреквесты и критика приветсвуются :)\n",
{
"type": "link",
"text": "https://pub.dev/publishers/serge.software/packages"
},
""
]
Maxim Terehov
в закладки добавил, посмотрю)
Serge Shkurko
А идея классная сам раньше писал стихи, как запустишь напиши - опубликую работы :)
Serge Shkurko
надо еще систему рейтинга продумать
Maxim Terehov
Как заказчик бету запустит, сообщу)
Maxim Terehov
Там будет много чего, задумка велика
Serge Shkurko
не сомневаюсь :)
Maxim Terehov
Собрал сейчас
Maxim Terehov
Всё работает
Serge Shkurko
Может кто-нибудь заценить приложение которое разрабатываю год на работе? Буду рад конструктивной критике м предложениям
les forest
Поставь телефон в подключении режима камеры
Maxim Terehov
Давай, я не прочь посмотреть интересные примеры
Serge Shkurko
данные авторизации в лс напишу
v (п'ять)
Неплохо было бы добавить в настройках размер карточек газет, потому что некоторые заголовки либо фото на первой странице не видно
Serge Shkurko
Ты про эти карточки?
Serge Shkurko
Это же превьюшки, если надо детально посмотреть то пользователь должен провалиться во внутрь и открыть разворот
Serge Shkurko
А вообще спасибо, подумаю над этим
v (п'ять)
просто такие приложения часто использует старшее поколение, и некоторые чтобы не напрягаться ставят шрифт побольше
Serge Shkurko
на счет изменения шрифтов это да, планирую потом добавить возможность регулирования
v (п'ять)
И ещё, раз зашла речь за них, то кнопки для увеличения/уменьшения при просмотре скринов газеты тоже уместно добавить, потому что сколько я не наблюдал, то у всех с второго-третьего раза получается зумить нормально жестами
Serge Shkurko
ууу это была больная тема, здесь перелистывание работает нормально
Serge Shkurko
даже если увеличить картинку и проскролить до следующей, как в IOS
Serge Shkurko
А по поводу кнопок - сначала так и предлагал бизнесу, но как я сам тоже понимаю не лучшее решение
Serge Shkurko
надо поправить двойной тап, он должен выполнять это функцию
Serge Shkurko
могу дать доступ к полной версии, там на порядок больше функционала
v (п'ять)
Ну давай, может ещё что-нибудь найду потом :) А выбор системы управления можно было бы разместить рядом с выбором размера текста, так, чтобы никуда лишний раз лазить не пришлось
v (п'ять)
Хотя если просто и подсказки будут при первом запуске, то и с двойным тапом, я думаю, разберутся
Serge Shkurko
в лс отписал
Даниил Грущак
Согласен. В чем-то конечно есть плюсы Redux, но мне кажется, что чем больше приложение становится, тем сложнее контролировать данные. Отсюда и баги полезут. Потому что есть возможность кидать Action отовсюду.
Serge Shkurko
По своей сути блок похож на радкс, только один огромный стейт раздроблен на кучу маленьких и независимых
Serge Shkurko
инкапсуляция
A1ex Petrov (К)
Можете подсказать, как внутри кнопки текст выровнять сбоку? а не по центру
Serge Shkurko
[
"попробуй внутри кнопки обернуть в такой контейнер\n",
{
"type": "pre",
"text": "Container(\n alignment: Alignment.centerRight \n child: Text(...),\n)",
"language": ""
},
""
]
A1ex Petrov (К)
ага, я так же примерно подумал, и обернул в Align
Anatoliy Dvoryashin
Народ привет. Кто помнит как на презентации в Нью-Йорке в декабре делали подключение одновременно к нескольким устройств?
Даниил Грущак
А mobx нигде не использовал?
Van Xemidov
хэй, народ, кто делал чат на firebase + flutter, можете помочь, каким макаром получать сообщения?
Григорий Коршунов
[
{
"type": "link",
"text": "https://medium.com/flutter-community/building-a-chat-app-with-flutter-and-firebase-from-scratch-9eaa7f41782e"
}
]
Van Xemidov
там только на одного пользователя + авторизация
A1ex Petrov (К)
Подскажите, как избежать проблему: Я отправляю через сокеты сообщение вида "Привет как дела\". и на приеме при парсинге он жалуется на апостроф этот "\", что не может раскодировать json. Кто как обходил?
A1ex Petrov (К)
ошибка вылетает такого вида: [VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: FormatException: Unexpected character (at character 25) {"message": "cxxccx\", "username": "Alex Petrov"}
admin
А пробовал ещё одну \ добавить?
A1ex Petrov (К)
сижу, колдую сейчас
A1ex Petrov (К)
[
{
"type": "code",
"text": "replaceAll(new RegExp(r'\\'), r'\\\\')"
}
]
Игорь Корнелли
r перед переменной говорит о том, что не надо ескейпить стринги на символы
Игорь Корнелли
Или я путаю?
Игорь Корнелли
Вы же в регулярку так и пишите r’/’
A1ex Petrov (К)
и как заменить этот символ
A1ex Petrov (К)
или что бы он воспринимался нормально
A1ex Petrov (К)
что посоветуете
Dmitry Vasilev
Его вообще нужно удалить или он обязательно должен отправиться?
A1ex Petrov (К)
[
{
"type": "code",
"text": "replaceAll(r'\\', r'\\\\')"
},
" так вышел из ситуации, если что, потом удалю"
]
A1ex Petrov (К)
это для чата делается, возможно человек смайл так нарисует
Dmitry Vasilev
ну можно на utf-8 заменить
Dmitry Vasilev
или просто делать encode всему сообщению
A1ex Petrov (К)
А можно при отправке сделать replace на 2 бэкслэша, а при приеме обратно в один
Александр Васильев
Есть ли приложения под ios где можно писать хотя бы dart - подсветка и запуск? Что-то удобнее dartpad
ilx13
hot reload оказывается очень крутая штука.
Andrey Khramov
Android Studio?
Andrey Khramov
А именно под ios
Александр Васильев
на телефон?
Александр Васильев
по js много разных
Mitai
кто то ставил дарт из зип архива?
Mitai
я пересел на федору а под федю репы нет
Mitai
скачал архив распаковал, перенес в usr/lib прописал в PATH
Mitai
а веб шторм говорит нет у тебя там ни чего
Mitai
зашел а и правда на папке какой то крестик
Mitai
в свойствах пишет не читаемоме содержимое
Mitai
чивось делать то теперь...
Bola
Нужен именно отдельный дарт? Под флаттер если собрались писать, то он сам содержит в себе дарт
Max
А как ты JSON делал?)
Max
Потому что Dart:convert аккуратно эскейпит всё из коробки.
Дмитро
Здравствуйте, подскажите, пожалуйста. Раньше билдил апк и они были под 50 МБ, а сейчас всего лишь 10, это типо пакеты не упаковываются?
Игорь Корнелли
при билде остается только рендерер
Dmitry Vasilev
билд один и тот же или дебаг/релиз?
Игорь Корнелли
ну скорее всего он имеет в виду раньше, в новой версии сильно оптимзировалось это
Serge Shkurko
[
"Кто-нибудь работал с пакетом ",
{
"type": "code",
"text": "image_crop"
},
" ?"
]
Serge Shkurko
[
"Встречался с такой проблемой?\n",
{
"type": "link",
"text": "https://github.com/VolodymyrLykhonis/image_crop/issues/41"
},
"\n\nизображение имеет идентичное соотношение сторон с квадратом для обрезки и изображение зачем-то отображается увеличенным, хотя вполне себе могло бы не увеличиваться"
]
Денис
впервые вижу такое поведение
Денис
[
{
"type": "pre",
"text": "Crop(\n key: cropKey,\n image: Image.file(imageFile),\n aspectRatio: 21.0 / 9.0,\n ),",
"language": ""
}
]
Serge Shkurko
так с начала так и пробовал
Денис
просто без скейла всегда использовал и было нормально
Денис
а почему ты сразу в билдере route фигачишь скаффолд? не пытался как обычно обернуть все в Statefull и отдельно страницу сделать? а то может Scaffold себя неправильно ведет?
Serge Shkurko
просто экспериментирую, до этого в диалоге такая же проблема была
Serge Shkurko
Портретные картинки нормально обрабатывает, не растягивает
Денис
очень странное поведение
Денис
но пробовать надо искать нелогичные решения)
Serge Shkurko
попробую продебажить
Денис
у кого нибудь в файлах такая фигня появлялась? причем только в String
|