Программирование : Dart & Flutter по-русски
d
причем тут context вы на вторую страницу как навигируетесь?
Vladimir
[
"Всем привет, столкнулся с странным багом на iOS после апдейта с Flutter 1.20.4 до 2.0.6. Билд собирается успешно но при загрузке на эмулятор выкидывает ошибку \"flutter: MissingPluginException(No implementation found for method Firebase#initializeCore on channel ",
{
"type": "link",
"text": "plugins.flutter.io/firebase_core"
},
")\". Кеши чистил и в AppDelegate.swift \"FirebaseApp.configure()\" добавлял но ошибка есть. В то же время Android успешно собирается и выгружается в эмулятор без каких либо ошибок. Есть идеи куда копать?"
]
Arslan
[
{
"type": "hashtag",
"text": "#Вопрос"
},
"\nС чего начать flutter когда вышли глобальные обновления.\nЕсть руководство для 2021 года, июнь месяц?)"
]
Harley
Я не юзаю материал
Harley
Но использую PageTransition
d
тут уже честно говоря хз, я с ним не работал
?? ??
[
"Есть какие-то годные альтернативы кроме ",
{
"type": "link",
"text": "https://pub.dev/packages/liquid_engine"
},
", чтобы вшивать в хтмл переменные?"
]
Alexey
[
"Пакеты Firebase хорошо обновились к версии 2.0. Уже не надо в AppDelegate.swift ничего добавлять. Посмотри миграцию тут - ",
{
"type": "link",
"text": "https://firebase.flutter.dev/docs/migration/"
},
""
]
Vladimir
добавлял скорее от безнадеги потому что с добавлением или без баг есть. По гайду прошел особо ничего не помогло. По моим прикидкам похоже что файл не вычитывается хотя вроде как до этого работал как часы.
d
[
{
"type": "link",
"text": "https://pub.dev/documentation/page_transition/latest/page_transition/PageTransition/reverseDuration.html"
},
"\n\nчтобы не было анимации при ",
{
"type": "code",
"text": "pop"
},
", по идее, надо в конструктор передать нулевую ",
{
"type": "code",
"text": "reverseDuration"
},
""
]
Harley
Спасибо ребят я решил проблему
Игорь
Подскажите пожалуйста, как отодвинуть блок на такое расстояние, если бы был к примеру appBar?
Игорь
Помогло) Спасибо огромное то что хотел
Илья Высоцкий
скажите можно ли в IntroductionScreen кастомно настраивать кнопки skip, next и точки прогресса, например мне надо в колонку их а не в ряд, и сменить очередность с базовой на мою
PTLam
[
"ребята, кто-то юзал пакет auto_route и делал bottom navigation bar routing по этому примеру ",
{
"type": "link",
"text": "https://autoroute.vercel.app/advanced/bottom_navigation_bar_routing"
},
"? Там оно сохраняет состония каждой вкладки.\n\nВсе работает, но при переходе между вкладками оно мигает. Записал видео в документе выше. Как можно убрать мигание?"
]
Daniil Razbitskiy
Уважаемые) Может есть идеи у кого как добавить сюда отклик на каждый sliderItem
?????????? ??????????????
ребят, вопрос есть следующего содержания если мне нужно отслеживать доступность бекенда в приложении… как лучше всего это сделать? возможно сделать второй изолят, в котором будет крутится бесконечный цикл к примеру с таймаутом в 15 секунд? и “пинговать” бекенд?
?????????? ??????????????
коротко говоря в зависимости от доступности бека, прилажка меняет логику работы что-то вроде онлайн/офлайн режим, но пользователь так-же должен знать доступен прямо сейчас бек или нет
?????????? ??????????????
при этом аппарат с приложением может быть в инете, но к примеру отвалилась прокся поэтому коннективити не подойдет… либо сам бек выпал
MiT
А во время запроса нельзя это сделать? Больше похоже что вам нужны вебсокеты
MiT
Я бы не хотел чтобы у меня какое либо приложение раз 15 сек кидало пинг на сервер... И батарею это будет кушать...
MiT
По поводу изолята, можно конечно. Но может поговорите с бэком как это лучше организовать?
Урусай
Кто? Пинг раз в 15 секунд сожрёт всю баратею?
MiT
Я думаю там не просто пинг, наверное json там есть
?????????? ??????????????
так я и пришел спросить как это лучше организовать =)
?????????? ??????????????
нет там простой запрос
?????????? ??????????????
гет получающий строку
Alexey
А сколько у тебя будет клиентов, отправляющих этот запрос? Один уникальный? А то может поставить триггер внешний и если что, присылать пуш
?????????? ??????????????
мне нужно проверять видит ли приложение бек, тригер и так внешний стоит, сейчас переключается при поптыке запроса, но надо чтобы перед запросом мы знали в доступности бек или нет, чтобы даже не пытаться формировать запрос а сразу складывать в очередь
IDONTSUDO
Сделай DI над http абстоакцией, и там в этом DI сделай pull функцию которая будет слушать состояние запроса, и если условно запрос идёт больше 5 секунд значит сервер не работает. Если он выполнил я в течении 5 секунд сбрасывай таймаут.
?????????? ??????????????
хотелось бы чтоб пользователь знал доступен бек в данный момент или нет,
?????????? ??????????????
типа статус бека
IDONTSUDO
Ну пусть юзер идёт через ssh подключается к серверу, и смотрит логи. Так он точно все узнает.
Темирлан
Заказчик просит настроить возможность A/B тестирование. нужно только брать настройки с firebase remote config, остальное сделает сам сервис firebase Не могу понять что мне нужно сделать, чтобы можно было делать тестирование
Темирлан
сделал вот это по туториалу
Cat-Wizard Ashere
Гаязы, a yield* он же не как return, не убивает весь код после себя?
Cat-Wizard Ashere
грустно
S R
Добрый день, у меня проблема с установкой флаттер через гитхаб, Просто начал установку и она как-то прервалась , теперь при попытке установить заново терминал выдает ошибку На MacBook
Arthur Muratov
Может отправишь ошибку?)
I V ?-N
Ребята, есть идеи как вытащить первый кадр из видео? Кто нибудь сталкивался с этим? Видео может весить > 1гб
S R
В инете нашел ошибку , но решения немножко не понял
S R
Это уже при попытке скачать ЗИП файл
Alexandr Borisovich
ffmpeg
Alexandr Borisovich
flutter upgrade --force
I V ?-N
Он слишком много весит и вроде как долго будет доставать кадр
Alexandr Borisovich
распакуй через гуй
Alexandr Borisovich
и шо это у тебя версия x x x - stable ты откуда эту срочку скопировал? Конечно у тебя нет этого файла, это шаблонная строка
Alexandr Borisovich
А видео в дарте проигрывается?
Alexandr Borisovich
А интерфейсов этой библиотеки нету чтобы взять кадр? ТОгда хз. Ты бинарно не прочитаешь файл, не найдешь ключевой кадр и не заберешь обратно. Ессть прога AviDemux она кропает без перекодировки но как прочитать файл бинарных для этого в дарте хз.
Dre
у бекенда попросить не получится?
Dre
не хотят, так правильней
Alexandr Borisovich
[
{
"type": "link",
"text": "https://superuser.com/questions/663928/ffmpeg-to-capture-stills-from-h-264-stream"
},
" помоему это реально возможный способ. Библиотек, которые читают бинарники всех популярных видео форматов ради одного фрейма нету."
]
Alexandr Borisovich
и это не будет долго
Dre
это все интересно и весело но подразумевает загрузку видео
I V ?-N
А он с большими видео справится?)
Dre
видео на девайсе или на сервере?
I V ?-N
Ну, видео снимает пользователь, как в телеге
I V ?-N
Потом отправляется на сервер)
I V ?-N
Телеграмм как-то решил этот таск, интересно как)
Dre
окей, это 2 разных видео и 2 разных подхода
Dre
телега конвертит и компрессит при аплоаде
Dre
и при даунлоаде анкомпрессит и присылает thumbnail
Dre
на девайсе кадры не парсятся
Dre
давайте представим ютуб где что бы получить thumbnail надо скачать все видео со страницы
Урусай
Конченная кстати тема с сжатием на клиенте ) Один заказчик неумолимо хотел что бы видосы сжимал девайс пользователя, наебался с этим знатно
I V ?-N
Быстро сжимаются?)
Урусай
Зависит от настроек
Урусай
Но вообще неправильно так делать
Виктор
А какую цель заказчик преследовал?
I V ?-N
Тогда это просто видеоплеер на паузе?)
Dre
подозреваю что траффик
Урусай
Такую что бекендер не хотел этого делать )))
Виктор
Тогда все понятно ??
Виктор
С точки зрения трафика лучше отдавать клиенту сжатую версию)
Виктор
Если он не готов воспроизводить полную
Dre
при аплоаде они сжимали на клиенте
I V ?-N
А каким инструментом получилось?)
Виктор
?? об этом не подумал
Урусай
Но никому не советую
Урусай
Не стоит заниматься баловством со сжатием\расжатием на клиенте
Maxim Chernyshov
[
"как в интеграционном тесте дождаться перехода на некст роут?\nдопустим, пользователь нажал кнопку, после этого из теста выкидывает (см. ссылку на pastebin)\n",
{
"type": "link",
"text": "https://pastebin.com/T4mu9j9X"
},
""
]
Maxim Chernyshov
[
"раскомментировал ласт строки, после pumpAndSettle\n",
{
"type": "pre",
"text": "Expected: exactly one matching node in the widget tree\n Actual: _KeyFinder: ] (ignoring offstage widgets)>\n Which: means none were found but one was expected",
"language": ""
},
"\nпо идее после логина должен быть сайдбар"
]
Урусай
Если у тебя анимация стопнулась раньше сайдбара то он его не застанет
Alexandr Borisovich
нет, там класс MediaMetadataRetriever
Alexandr Borisovich
если андройд умеет читать видео почему не умеет читать фреймы?
Dre
проблем в том что у автора бекендеры не хотят в бекенд
Alexandr Borisovich
не могли предоставить расчеты?
Урусай
Не, там дотнетчик. Они же все отсталые
d
а это с реальным бекендом тест?
d
а при входе есть какие-либо анимации? например, CircularProgressIndicator, и тп?
Maxim Chernyshov
вроде как на все экшены вызывается loader
d
я думаю, что pumpAndSettle заканчивается до того как юзера залогинивает
Maxim Chernyshov
[
"да, похоже на правду\nтакой трюк в теории поможет - ",
{
"type": "link",
"text": "https://stackoverflow.com/a/62694650/11450213"
},
" ?"
]
d
[
"думаю чтобы это проверить можно после pumpAndSettle убедиться, что он все еще находит LoginButton, или запринтить ",
{
"type": "code",
"text": "tester.allWidgets"
},
""
]
d
скорее всего не поможет
Maxim Chernyshov
[
{
"type": "code",
"text": "(RepaintBoundary, App, MultiProvider, _NestedHook, ...)"
}
]
d
принтить, наверное, не вариант, думаю, можно просто убедиться, что он до сих пор на логин странице
Maxim Chernyshov
а он прост закрывает приложение после того как все инструкции пройдет
Maxim Chernyshov
надо роут узнать как-то
d
так он на логин странице остается в итоге?
Maxim Chernyshov
перед тем как закрыть приложение - да
d
[
"значит он не залогинился к этому времени\n\nя кстати хз, там нет валидации часом? а то мало ли, из-за валидации не запускается логин?)\n\n",
{
"type": "code",
"text": "final phoneInputText = 'nmbr’;"
},
""
]
Maxim Chernyshov
это я поменял данные, для публичной заметки
Maxim Chernyshov
а так данные ввожу, которые валидные. вручную логинится
d
[
"может попробовать это?\n\n",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/flutter_test/expectLater.html"
},
""
]
d
[
{
"type": "code",
"text": "await expectLater(slidingMenu, findsOneWidget);"
}
]
d
а хотя не сработает по идее
d
если pumpAndSettle закончился, новая страница не запушится
d
может быть, есть вариант замокать логин в тестах?
d
если вдруг бек на файрбейзе, можно сделать эмулятор для тестов, кстати
Maxim Chernyshov
а https запросы из е2е теста работают из коробки?
Maxim Chernyshov
[
"по идее я должен написать некст конструкцию, пампнуть виджет App\nдолжно быть залогинено\n",
{
"type": "pre",
"text": "testWidgets('user logined',\n (WidgetTester tester) async {\n await tester.pumpWidget(App());\n await tester.pumpAndSettle();\n });",
"language": ""
},
""
]
Maxim Chernyshov
но и это не работает
Yerassyl
Салем всем, вопрос: кто нибудь делал prevent screenshot & video только в нужных экранах??
Evgeniy Levahin
Всем привет!)
Maxim Chernyshov
мб ошибка в том, что пермишенов на карте нетъ
Maksim
Всем привет! Как можно сделать, чтобы свайп listview работал по типу pageview?
Роман Аблаев
Не совсем понятно зачем, у страницы листание куда хуже, чем у списка
Константин Бобров
Привет! Что значит статус "Готово к отправке" в тестфлайт? и как из тестфлайт выгрузить в эппстор?
Maksim
Есть карточки с контентом, которые листаются по горизонтали. Одна карточка занимает всю ширину экрана, а всего карточек +- 5. Хочу сделать листание, например, как в тиндере. Только без анимации.
Mykola Shevchenko
Может Dismissible поможет?
Константин Бобров
Можете помочь?
Maksim
К сожалению, не то
Andrey
народ, а как-то dart-define определить для юнит тестов можно?
MiT
Хм, наверное да. Нужно смотреть на параметры запуска тестов, есть ли они там...
Andrey
В идее параметров для тестов нет
MiT
Через терминал команду посмотри и какие она аргументы принимает
MiT
В идее много чего нет...
Daniil Razbitskiy
Вечер добрый, можете подсказать есть ли способ, записать данные из контейнера на странице, в mysql?
Andrey
[
{
"type": "pre",
"text": "/Users/andrey/flutter/bin/flutter --no-color test --machine --start-paused --plain-name “Test” --dart-define=app_package_name=\\”app name\\” --dart-define=app_release_mode=\\\"debug\\\" test/file_test.dart",
"language": ""
},
"\nНе, не работает"
]
Dmitry Demchenko
можно сделать так -> Column([Expanded(Column([Text,Text]), Button])
Вадим
да просто между текстами и кнопкой Spacer
Вадим
а, и чтобы прям по центру тексты, над ними тоже Spacer
Ivan ??
Всем привет! Как лучше организовать Навигауию в приложении? Через pushNamed или в push передавать виджет? В чем вообще плюсы именованных роутеров? Сорри если вопрос свехтупой я в мобилке новичек
Ivan ??
Я как раз пришел из веба и мне этот вариант кажется хорошим
Ivan ??
А мой коллега из iOS и он за другой вариант
Maxim Chernyshov
эм, короч, надо ждать ответ от https запроса, тогда все сработает
Maxim Chernyshov
[
{
"type": "pre",
"text": "await tester.tap(loginButton);\nawait Future.delayed(const Duration(milliseconds: 3000));\nawait tester.pumpAndSettle();",
"language": ""
}
]
d
ну вообще по идее если есть какой-то прогресс индикатор pump and settle должен ждать
Maxim Chernyshov
я щас посмотрел - там чисто переход
Maxim Chernyshov
то есть ждем ответ от сервака -> идем дальше, когда ответ пришел (если все ок)
Maxim Chernyshov
лоадера на этом моменте нет, зато лоадер есть при пампе виджета App и pumpSettle работает как надо
d
ну короче pumpAndSettle ждет завершения всех запланированых фреймов, если бы показывался процесс загрузки при входе, то (тк лоадер это бесконечная анимация) pumpAndSettle завершался бы когда заканчивается процесс входа
Maxim Chernyshov
хм, получается решением задачи является добавление анимации?
Maxim Chernyshov
чтоб pumpAndSettle заработал как надо
d
ну он работает как надо) просто в данной ситуации ему по сути нечего ждать (и при этом переход на новую страницу не начался)
Maxim Chernyshov
имею ввиду в моем контексте. так то да, он работает как надо, просто у меня лоадера нет при нажатии на кнопку "логин"
d
тут надо копать в тесты может быть есть какой-то способ дождаться завершения всех Future или тп
Maxim Chernyshov
pumpAndSettle вполне неплох
Maxim Chernyshov
Он ж на одном экране будет ждать завершения анимации
A#
А зачем mysql, есть же firebase, куда легче загружать данные ??
A#
[
{
"type": "link",
"text": "https://pub.dev/packages/carousel_slider"
}
]
d
если подойти с другой стороны - можно замокать ваш блок / ченджнотифаер с авторизацией чтобы он сразу логинил
d
но это уже будет нечто похожее на unit test
?? ??
Как правильно сделать поле опциональным и с дефолтным параметром? Я уже ничего не понимаю, и это почему-то не работает
?? ??
Создаёт null всё равно
Maxim Chernyshov
это да, но вроде не фейрбейз юзаем, либо юзаем его через бэк
d
this.fieldName = fieldValue в конструкторе
d
[
"если нужен дефолтное значение то надо убрать ",
{
"type": "code",
"text": "required"
},
""
]
?? ??
[] туда не попадает
d
так вам его надо в конструктор перенести
d
то что сейчас у вас это инициализатор
d
да но туда можно передать null чтобы было нельзя уберите знак ? после List
?? ??
Теперь он всё равно видит тут Null
d
это не в конструкторе проблема а в Map
d
это ж в рантайме оно падает?
d
ну вот у вас в мапе по этому ключу null оно пытается присвоить null non-nullable типу и оно падает в рантайме
d
[
"если вы считаете что там может быть null в мапе, то тогда давайте ему ",
{
"type": "code",
"text": "map[‘messages’] ?? defaultValue"
},
""
]
?? ??
как эту конструкцию по-человечески записать?
?? ??
нет, просто ?? нельзя, там нужно обработать лист
|