Программирование : Dart & Flutter по-русски
Mitai
как видишь ни 1го индуса, и это при том что я флаттер даже не ищу, а ищу дарт
Скерис
товарищи, подскажите, как такое может быть - из приложения на flutter посылаю запрос POST, в ответе приходит set-cookie, но в куки таки ничего не падает, хотя никакого domain или expires я не ставил
Alexey Z
Через что отсылаешь?
Скерис
[
{
"type": "link",
"text": "http.post"
},
" из 'package:http/http.dart'"
]
Олжас Сулеймен
[
{
"type": "mention",
"text": "@bunopus"
},
" спам"
]
Alexey Z
Http не потдерживает куки, нужно пилить самому или использовать готовые решения
Александр Васильев
Иммутабельность, как раз не нужна. Все проще оказалось, в toJson к результату добавлять нужное поле User.toJson(..) { .. result['getterVar'] = this.getterVar; return result; }
Michael Bazilique
[
"Ребят, юзая ",
{
"type": "bold",
"text": "getApplicationSupportDirectory"
},
" с path_provider получаю ",
{
"type": "pre",
"text": "ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized.",
"language": ""
},
"\nВ мейне перед runApp() юзаю WidgetsFlutterBinding.ensureInitialized(), как все говорят. В чем может быть проблема?"
]
Pavel Pimenov
Перезапускал приложение после добавление ensure?
Pavel Pimenov
Странно, покажи мэйн
Michael Bazilique
[
{
"type": "pre",
"text": "void main() {\n// debugPrintBuildScope = true;\n if (kDebugMode) {\n Fimber.plantTree(DebugTree());\n }\n\n \n // Pass all uncaught errors from the framework to Crashlytics.\n FlutterError.onError = Crashlytics.instance.recordFlutterError;\n \n final app = MaterialApp(\n navigatorKey: NavManager.kNavigatorKey,\n onGenerateTitle: (context) => context.str.applicationName,\n theme: FFTheme.ffHandyscopeTheme,\n localizationsDelegates: ffLocalizationDelegates,\n supportedLocales: S.delegate.supportedLocales,\n navigatorObservers: [\n FirebaseAnalyticsObserver(analytics: FirebaseAnalytics())\n ],\n routes: NavManager.routes);\n setupGetIt();\n WidgetsFlutterBinding.ensureInitialized();\n runApp(MultiProvider(providers: diProviders, child: app));\n}",
"language": ""
}
]
Pavel Pimenov
Наверное, при создании app (или вызове setupGetIt) уже требуется ensure. Попробуй сделать ensure в самом начале мэйна
Michael Bazilique
[
{
"type": "mention",
"text": "@pa7el"
},
" к сожелению никак не помогло"
]
Pavel Pimenov
Ну тут надо искать, какой вызова приводит к ошибке
Michael Bazilique
написал же, вот он:
Michael Bazilique
вызов getApplicationSupportPath() с либы path_provider
Pavel Pimenov
А в каком месте ты его вызываешь?
Pavel Pimenov
Покажи как сейчас выглядит мэйн
Michael Bazilique
он выглядит так же как и раньше
Michael Bazilique
Вызываю я его очень глубоко в дереве, в одном из интеракторов
Pavel Pimenov
То есть ensure в начале нет?
Michael Bazilique
*ну только я ensure дал в самый вверх
Kirill Aparin
Почему я ору со слова Sacffold в названии
Andrey Novatovski
парни, я всё не могу понять, вот у меня есть один экран и когда он появляется надо асинхронно открыть json файл, чтобы это показать на странице. Async в initState вставлять нельзя и еще мне не хочется делать Streams. Есть ли какой-то способ проще?
Andrey Novatovski
делать прелоадер перед главным экраном тоже не хочется
Yerassyl Maikhanov
у кого zefyr не ставится на новой версии flutter 1.20.2 beta
Yerassyl Maikhanov
как решили проблему?
Evgeny Cherkasov
Самое простое - FutureBuilder
Yerassyl Maikhanov
чет они не отвечают в issue
Pavel Pimenov
Сделай отдельную async функцию, и вызови её в initState без await
Kirill Aparin
Почему нельзя то
Kirill Aparin
Делайте в init
Yerassyl Maikhanov
да это легко, + вряд ли он будет ждать так долго что пользователю наскучит
Andrey Novatovski
да, можно, если вынести в отдельную
Andrey Novatovski
наверно да, окей
Kirill Aparin
[
{
"type": "pre",
"text": "void _void() async {\n }\n\n @override\n void initState() {\n super.initState();\n _void();\n }",
"language": ""
}
]
Sergey Hottabych
А ты че, руками сериализуешь, что ли?
Andrey Novatovski
я прост думал, что это бредятина
Andrey Novatovski
но если так делают, то ок
Александр Васильев
json_serializable использую, а совет как раз от его разраба в гите хотя перед этим Фокс так предложил сделать:)
Александр Васильев
А фокса нету теперь тут?
Sergey Hottabych
Да нах.. он нужен))
Sergey Hottabych
Без него разберемся
Александр Васильев
До это использовали built_value но замцчились с мутированием когда нужно, по этому иммутабльность под вопросом
Александр Васильев
С Фоксом же веселее:) вы чего)
Sergey Hottabych
Я не пойму. Если ты используешь json_serializable, как ты прописываешь что-то в toJson? Он же генерируется
vasilich
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=RRcI--QZNow"
}
]
Александр Васильев
сам toJson в датаклассе же
Александр Васильев
перед ретурном меняю
Yerassyl Maikhanov
эххъ были времена
Александр Васильев
вот так
Kirill Aparin
Какая библиотека для такого time_picker
Александр Васильев
[
{
"type": "mention",
"text": "@JsonKey"
},
" не смотрите - не работае для геттеров"
]
Sergey Hottabych
Ааа. Любопытно.
Andrew Ka
Это хейтеры. Привыкайте ??
Sergey Hottabych
То что я предложил - это из Джавы паттерн. Есть POJO - актуальная модель для кода и DTO - модель для json. И маппер, который перегоняет одну в другую.
Sergey Hottabych
Ну а в Дарте не маппер, а фабрики.
Mitai
это не мои видосы))
Марк
A во Flutter есть только main.dart или можно сделать другие активити?
Kirill Aparin
Как сделать такую шнягу?
Yaroslav
ListWheelScrollView если быстро и отчасти похоже, можно еще немного поиграть с параметрами
Александр Васильев
не охото писать еще один метод когда есть сгенерированный toJson
Michael Bazilique
[
{
"type": "mention",
"text": "@pa7el"
},
" проблемой оказалось то что это вызывалось в изолейте."
]
Michael Bazilique
[
{
"type": "mention",
"text": "@pa7el"
},
" ",
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/13937"
}
]
Serhii
ребзи, а я массив получается могу поменять пройдя по нему только обычным for циклом? форИч какой-то кастрированный по сравнению с джаваскриптовым
Serhii
да я знаю, что он есть. я о том, что в жсе я могу в коллбек прокидывать индекс и сам массив, что бы по походу сразу менять элементы, а тут я не могу так сделать
Socrat
[
{
"type": "link",
"text": "https://api.dart.dev/stable/2.4.0/dart-core/List-class.html"
}
]
Socrat
все что тебе неадо здесь
Daniil S
Дак если это шняга, может не делать тогда ее?
Kirill Aparin
Клиент хочет)
Daniil S
Надо ему объяснить тогда, что это шняга.
Daniil S
Неуважение к себе получается, шнягой заниматься
Kirill Aparin
Скорее я буду профи, если сделаю любую шнягу, какую только придумают
Daniil S
сделай адронный колайдер на flutter
Kirill Aparin
В разумных же пределах
Kirill Aparin
Если понимаю, что не сделаю что-то я так и говорю клиенту
Павел Середа
я колхозил 2 таймпикера
Daniil S
вам нужно подготовить тз "Любая шняга в разумных пределах"?
Павел Середа
а там на скрине идея для таймренжа конечно интересная
Alexander PhatoM
может у кого то было такое, в AS при начале описания метода через Future появляются ошибки компиляции и не проходят, даже когда всё ок. Помогает только перезапуск AS, но это не очень, каждый раз перезапускать...
Evgeny Sosnin
Постоянно ??
Nikita Kanunov
Здравствуйте, кто-нибудь здесь имел опыт работы с ВК или Facebook api из flutter? Как это делать?
Oleg
Имел опыт работы с апи вк, задавай вопрос конкретнее
Nikita Kanunov
Как правильно получать нужные мне данные? (Список друзей, ленту новостей, историю сообщения)
Oleg
Кидать нужный запрос )
Oleg
Не понимаю, если честно, о чем ты)
Nikita Kanunov
Я должен работать с нативными api?
Oleg
нет, тебе надо работать с api вк, открыв их документацию на сайте
les forest
наверное проще с REST API их работать
Oleg
Ну и делать http запросы
Nikita Kanunov
О как, а я думал нужно подключать api для каждой ос и там уже работать)
Nikita Kanunov
И уже в нативе работать??
Oleg
Это для нативных платформ есть уже просто написанные модели и запросы за тебя
Nikita Kanunov
Круто, тогда легче будет)
Oleg
Так же , если мне не изменяет память, были пакеты vk sdk под флаттер, в которых что- то реализовано уже было
Nikita Kanunov
И ещё вопрос, прохожу курс, рекомендованный Google, там рассказывают про state management Provider. Также очень много слышу про bloc, и даже пытался что-то писать с помощью него. Как из них выбирать? Что для чего подходит?
Nikita Kanunov
Не видел, поищу)
Kirill Aparin
Я сделал что-то похожее, только как мне теперь ближайший элемент к центру примагничивать, а то проявляются ситуации, когда в центре почти два элемента
Kirill Aparin
[
"Вот код\n",
{
"type": "pre",
"text": "Widget _timePicker(BuildContext context) {\n return Container(\n height: 200,\n width: MediaQuery.of(context).size.width,\n child: Row(\n children: [\n Container(\n margin: EdgeInsets.only(top: 43),\n height: 200,\n width: MediaQuery.of(context).size.width / 2,\n child: ListWheelScrollView(\n diameterRatio: 1.5,\n offAxisFraction: -.7,\n children: List .generate(\n 25,\n (int index) => Text(\n '$index:00',\n style: TextStyle(\n fontSize: 23,\n fontFamily: 'GothamPro',\n color: Color(0xFF232326)),\n )), // [0, 1, 4],\n itemExtent: 30,\n overAndUnderCenterOpacity: 0.2,\n useMagnifier: true,\n \n ),\n )\n ],\n ),\n );\n }",
"language": ""
},
""
]
Kirill Aparin
Иду по этой подсказке
Дмитрий Щербаков
я бы сделал dropdownbutton вместо колеса этого)
Yaroslav
FixedExtentScrollPhysics
Kirill Aparin
Спасибо) Ты реально крут
L
Для чего в listview используется addAutomaticKeepAlives ? документации мало про это
Урусай
Читай про KeepAlive виджет
oc1 kent
Мужики. Dart (flutter ) понимает 0/1 как bool или только на вход подавать true/false?
vasilich
Тру/фольс Это вам не ЖС хипстерский)
oc1 kent
а как по изи из 0/1 сделать тру фолс из парсинга json?
oc1 kent
без костылей вроде switch / ifelse
vasilich
Заварить все через json_serializable с кастомным методом десереализации поля
Maks Kravchenko
value == 1
oc1 kent
Я обясню все из-за виджета switch у меня не хочет принимать 0/1 значение прошедшее сериализацию
Andrey Novatovski
а кто-то понимает как адаптировать иконку под все android?
Andrey Novatovski
на флатере
vasilich
[
{
"type": "link",
"text": "https://pub.dev/packages/flutter_launcher_icons"
}
]
Dima
В андройд модуле на папке с ассетами - создать новый ассет и там есть стандартный андройд генератор, делает идеально
Andrey Novatovski
Кто-то делал библиотеку свою?
Andrey Novatovski
Для флатера
Andrey
Ребят, кто может помочь выложить приложение в AppStore на ваш аккаунт, я установлю себе его и можете удалить
Andreu
В чем проблема то установить через TestFlight?
Andrey Novatovski
мака мб нет
Andrey
А через винду можно?
Andreu
Аккаунт разработчика и никаких проблем, с помощью сервисов
Andrey
14 ось поддерживает? У меня возникали с этим проблемы
Andreu
А почему нет то? TestFlight это фактически тот же AppStore
Andreu
Другой момент как там собирает cd/ci тво сборку
Andreu
Но ты конечно норм придумал тестить на бете
Andrey
У меня нет аккаунта разработчика, дороговато, и мне нужна лишь 1 установка
Andreu
Проще всего найти товарища с маком, который скомпилирует тебе напрямую по проводу
Andrey
Да, я так пробовал, но xcode не поддерживат 14 ось, она пока что в бета тестировании, а откатиться нельзя, нужно ждать новой версии xcode
Andreu
Ну так потому что тебе нужно биг сур ставить, а не каталину
Andreu
И откатиться опять же можно
Andrey
Вот что при откате
Andreu
ipsw образ скачал?
Kirill Aparin
без костылей вроде ifelse врятли обойдёшься попробуй сокращённую схему var==0?false:true
Sergey Hottabych
Да, твой вариант лучше
Марк
Как можно задать цвет в hex?
Roman Vasiliev
value == 1 ? true : value == 0 ? false : null
Andreu
Да как-то длинно, да и чаще всего в таких случаях под null подразумевается false
Andreu
Я бы сделал в духе (value ?? 0) == 1
Roman Vasiliev
Можно еще короче value == 1
Andreu
Ну собственно да, это я уже туплю)
Имя Фамилия
"Flutter на практике" прочитал уже?
Andrey Novatovski
Есть там один человек, Который уже на 10 лет видео наделал
Vyacheslav
[
{
"type": "bot_command",
"text": "/stat@combot"
}
]
Combot
Total messages: 246237
Илья Максименко
Всем привет, кто как инициализирует данные в табах(от сервера)? В каждом табе отдельно или в initState корневого page? У меня все табы AutomaticKeepAliveMixin и при входе на корневой все запросы, если их сделать в табах, загружаются вместе и таким образом лишние запросы токенов происходят
Alexander PhatoM
А почему токен заранее не запросить?
Илья Максименко
И через блок провайдить?
Yerassyl Maikhanov
Токен просят один раз при входе в приложение
Yerassyl Maikhanov
А там уже запросы к данным идут
Илья Максименко
Ну при входе да, а дальше его надо как-то передавать в методы
Илья Максименко
Откуда его брать
Илья Максименко
А, это запрос токена из бд, забыл уточнить
Yerassyl Maikhanov
Хранить в переменной
Yerassyl Maikhanov
И еще в файл записывать
Yerassyl Maikhanov
У вас bearer token?
Yerassyl Maikhanov
oauth2 либу возьмите и не парьтесь
L
В блок хранить и оттуда брать
L
А провайдер я и не юзаю даже
Илья Максименко
О, спасибо за совет, посмотрю
Yerassyl Maikhanov
оп спасибо за стикеры))
Эрес Кара-Сал
Есть электронная версия книги?*
Sergey Hottabych
[
"Почему не срабатывает тест?\n",
{
"type": "code",
"text": "expect(store.login('test@mail.com', 'qwerty'), throwsA(HttpException));"
},
"\nВыдает следующее:"
]
Daniil S
А зачем вы тип кидаете как исключение?
Daniil S
Написано же в логах все =)
NewBalanceM5
[
{
"type": "bold",
"text": "Flutter.dev: Простое управление состоянием приложения:"
},
" Перевод одного из разделов документации на ",
{
"type": "link",
"text": "flutter.dev"
},
" ",
{
"type": "bold",
"text": "\"Simple app state management\""
},
".\n",
{
"type": "link",
"text": "https://habr.com/ru/company/otus/blog/518156/"
},
""
]
Daniil S
Ну и фьючу логин, надо бы вызвать думаю, а не просто передать как аргумент
4??uzhoy .
Что надо проверить по завершении теста ?
Sergey Hottabych
Что кидает конкретный тип исключения. Если просто написать throwsException - тест проходит
Kirill Aparin
Какой виджет использовать для вот такого По сути нужно чтобы была возможность двигать по горизонтали и вертикали этот экран, так как там есть ещё места, пытаюсь использовать InteractiveViwer, есть ли решения лучше?
Alexander Maverick
[
"А если так? ",
{
"type": "code",
"text": "expect(() => store.login('test@mail.com', 'qwerty'), throwsA(HttpException));"
},
""
]
Almas Tanayev
Использовать два листа, один горизонтально, другой вертикально. А так есть готовый плагин bidirectionalScrollView
Олжас Сулеймен
throwsA(isA ())
Tagir
как загружать картинки асинхронно с помощью bloc?
DVS (Read The F.ng Manual) Studio (NoHello)
заюзать спец плагин uploader и не усложнять себе жезнь
Tesseract
Извиняюсь за оффтоп, может кто-то подсказать хватит ли MacBook Air 2020 8GB i3 для разработки под флаттер, сколько времени уходит на билд проекта для дебага\релиза на ios. насколько шустрая vscode, android studio. Как чувствует себя с эмуляторами android\iphone. желательно в лс что бы чат не засорять.
Mitai
если бабла на нормальный огрызок нет, всегда можно накатить хакинтош
neikist
Это который flutter in action? Как он вам? А то пока треть прочитал, которая больше теоретическая, в целом нравится, но остальное отложил до момента когда время и желание появятся.
Timur K.
Доброго дня! Столкнулся с проблемой в веб, что не могу закрыть окно с приложением. Методы с close из dart:html и dart:js не работают, будто не знают об окне, что надо закрыть. Методы, что закрывают приложение на мобилках, тоже не отрабатывают. Есть ли еще какие способы это сделать?
Tagir
как загрузить список картинок с бэкенда подскажите, пожалуйста
Max
Серьёзно? Даже название перевести не осилили?...
neikist
А чего не так с переводом названия?
NewBalanceM5
не я же переводил
Max
Если прочитать хотя бы первый абзац статьи, понятно, что речь идёт об "управлении состоянием в простом приложении", а не "простом управлении состоянием в приложении".
Vladimir Ivanov
народ, а кто-нибудь знает, как показывать субтитры без видео?
neikist
Ну логика есть. Простое управление состоянием только для простых приложений и подходит.
|