Программирование : Dart & Flutter по-русски
KeepOnSmiling ??
но линукс у меня тоже ru_RU.UTF-8 :)
KeepOnSmiling ??
Хотя я так читаю в гугле - у кого-то оно точно также, только "en" постоянно возвращает, хотя у них не "en"
Sergey ?
[
{
"type": "mention",
"text": "@bunopus"
}
]
Elizaveta Anisina
[
"Ребят, подскажите, пожалуйста, подскажите, добавила i18n в приложение по туториалу ",
{
"type": "link",
"text": "https://habr.com/ru/post/451556/"
},
" \nА как сделать переключение по кнопке?"
]
Maria
[
{
"type": "mention",
"text": "@bunopus"
}
]
KeepOnSmiling ??
Так меняете язык и просто делаете ребилд - он и ребилдит с уже новыми данными
Elizaveta Anisina
Вы имеете в виду в устройстве?
KeepOnSmiling ??
Вызвав setState у Stateful виджетов, чтобы они пересобрались с новыми значениями
KeepOnSmiling ??
[
"Ещё вот такая трабла была: ",
{
"type": "link",
"text": "https://github.com/long1eu/flutter_i18n/issues/26"
},
"\nпоэтому приложение не переводилось на другой язык, покуда там функция возвращала всё время \"en\" в качестве локали"
]
KeepOnSmiling ??
Я несколько часов назад тоже самое писал тут:
KeepOnSmiling ??
Кто знает, почему у меня myLocale возвращает US, en, когда должно быть вроде как RU :) это особенность дебаг билда? Или эта функция не работает во флаттере?
KeepOnSmiling ??
почему-то и у меня оно постоянно возвращает "en", поэтому я сделал через ui.window.locale.languageCode
Elizaveta Anisina
нашли ответ?
KeepOnSmiling ??
Я заюзал просто другую переменную :)
Александр Котков
На чем тестируете
Elizaveta Anisina
Я вообще не понимаю как что и чем передаются значения(
Александр Котков
Вариант а) это айос там чтобы возвращал ру надо в икскоде добавлять такую локаль, б) вы указали в перечисление ру?
KeepOnSmiling ??
Galaxy Tab 4, Android 5.1, Visual Code
Александр Котков
На нем есть ру?
Александр Котков
Ну это ваш телефон
Александр Котков
Или эмуль
KeepOnSmiling ??
Это планшет
KeepOnSmiling ??
А вот эта возвращает "ru"
Александр Котков
Не могу сказать) с таким не сталкивался
KeepOnSmiling ??
Ну я простопривязался к другой languageCode - там всё корректно определяется :) в инете есть несколько сообщений, в которых ту же самую фигню пишут, что возвращает "en" постоянно. Может от версии андроида зависит
KeepOnSmiling ??
Может свой класс по-быстрому набросать для переводов?)
Elizaveta Anisina
точно по-быстрому?
KeepOnSmiling ??
На примитиве это статическая переменная (хэш) с эквивалентом английского названия и соответствующего перевода, а в текст (Text(...)) просто подставляете что-то вроде: map[language]["phrase"]
KeepOnSmiling ??
[
"Вот пример был такой реализаци: ",
{
"type": "link",
"text": "http://flutterdevs.com/blog/in-app-localization-in-flutter/"
},
""
]
Elizaveta Anisina
ну у меня есть арб файлы с джейсоном, в автогенерации плагина там я увидела почти то же, как в одном из туториалов реализовывали - кучу геттеров...
Elizaveta Anisina
что вот эта штука делает localizationsDelegates и вот эта supportedLocales?
KeepOnSmiling ??
supportedLocales - просто массив, поддерживаемых локалей, по которым есть переводы, localizationsDelegates - какой-то массив делегатов, не знаю даже где он там будет использоваться в том пакете, на странице нет упоминаний об этом массиве
KeepOnSmiling ??
Я бы делал без всего этого нагромождения, просто статическую мапу (two-dimensional) + хранил бы где-то язык в sharedPreferences или локальном файле
Elizaveta Anisina
а вот что тут происходит? ну понятно, что проверка, только не очевидно что будет, если в приложении нет языка устройства и это не в этой проверке.... String getLang(Locale l) => l == null ? null : l.countryCode != null && l.countryCode.isEmpty ? l.languageCode : l.toString();
KeepOnSmiling ??
Если не получилось определить язык - лучше просто кинуть в дефолтовый английский
Elizaveta Anisina
[
"а может можно вызвать этот свитчер?\n ",
{
"type": "mention",
"text": "@override"
},
"\n Future load(Locale locale) {\n final String lang = getLang(locale);\n if (lang != null) {\n switch (lang) {\n case \"ru\":\n return SynchronousFuture(const $ru());\n case \"en\":\n return SynchronousFuture(const $en());\n default:\n // NO-OP.\n }\n }\n return SynchronousFuture(const S());\n }"
]
Stanislav Sagan
Ааааааааааа
Stanislav Sagan
[
{
"type": "code",
"text": "Отформатируй пожалуйста"
},
""
]
Elizaveta Anisina
ну может оно так и работает, ищу в коде, где этот вопрос разрешается
Stanislav Sagan
Выделяешь текст, правой кнопкой мыши, формат моноширный. На телефоне тоже работает
Stanislav Sagan
?? Все теперь идеально
Elizaveta Anisina
я ничего не делала
Stanislav Sagan
??????????????
Stanislav Sagan
Показалось ????????
Elizaveta Anisina
я не понимаю, что происходит
Alex
[
{
"type": "link",
"text": "https://github.com/s0nerik/goloc"
}
]
KeepOnSmiling ??
Это чувство внушения :)
Stanislav Sagan
[
"а может можно вызвать этот свитчер?\n ",
{
"type": "code",
"text": "@override\n Future load(Locale locale) {\n final String lang = getLang(locale);\n if (lang != null) {\n switch (lang) {\n case \"ru\":\n return SynchronousFuture(const $ru());\n case \"en\":\n return SynchronousFuture(const $en());\n default:\n // NO-OP.\n }\n }\n return SynchronousFuture(const S());\n }"
},
""
]
Stanislav Sagan
Держи в общем, обращайся
Elizaveta Anisina
обращаюсь, можно ли этот свитчер использовать, что бы переключить язык в приложении?))))
Stanislav Sagan
Я дико извиняюсь, я вообще не понимаю что тут написано) Я только дарт осваиваю..
Elizaveta Anisina
я вообще-то тоже только-только
Stanislav Sagan
Ага, я попадал в чат когда ты защитила что-то там.. приложение свое) Уже больше меня знаешь
Elizaveta Anisina
а сейчас я фрустрирую
Stanislav Sagan
Красивое слово ????
Elizaveta Anisina
был бы еще код красивый
Stanislav Sagan
Ну отвечу тебе в общем. Если работает - то конечно можно ??
Stanislav Sagan
А ещё я бы ещё попробовал избавится от if, не уверен как это в дарте тут сделать можно, и После засунул последний return в default
Elizaveta Anisina
у меня тут код автогенерируется в плагине, он не изменяемый, я могу только использовать его методы
Stanislav Sagan
Ого, и так можно..
Elizaveta Anisina
так-то это вроде можно самому написать, но это шаблонный код и вроде как смысла нет...
Stanislav Sagan
Ну, лучше продублируй вопрос, если ты ещё сама не решила что делать, пусть он будет последним сообщением в этом чате, и тогда может кто-то подскажет ?? А ты крутая, по тому что дев девушка ??
Elizaveta Anisina
я просто пытаюсь разобраться в вызовах этой уже не очень черной магии
Elizaveta Anisina
все мы сначала женского пола
Alex
Так себе этот i18n плагин если честно
Elizaveta Anisina
рассказывай
Alex
Работает раз через десять :)
Elizaveta Anisina
Еще инфы
Alex
goloc работает всегда :)
Elizaveta Anisina
что это
Alex
[
{
"type": "link",
"text": "https://github.com/s0nerik/goloc/blob/master/README.md"
}
]
Elizaveta Anisina
так, хорошо, а вы знаете как сделать переключение языков по выбору пользователя в приложении?
Влод
не оч то частая фича в приложениях
Stanislav Sagan
Да, мне кстати тоже интересно, без перезапуска приложения не обойтись наверное будет?
Влод
так можешь примерно вспомнить чтобы где-то такое видела на мобилках?
Alex
Нужно каким-то образом занотифицировать апп о новой локали. Можно в сорсах MaterialApp глянуть на что он подписывается для прослушки изменения локали.
Elizaveta Anisina
[
"есть вот такое, больше не нашла ничего(\n ",
{
"type": "pre",
"text": "subscription = RootService.stores.auth.state$.listen((AuthState state) {\n subscription.cancel(); \n\n runApp(App(state.isAuthorized));\n });",
"language": ""
},
""
]
Alex
Совсем не то. Имел ввиду исходники самого MaterialApp, а не его использование в апе.
Elizaveta Anisina
те классы, что он исспользует?
Elizaveta Anisina
ого кто не спит
Alex
Так или иначе есть ещё один способ - динамически менять набор supportedLocales.
Ivan Dembicki
Не удалось поставить новый Flutter апдейтом, качнул SDK и закинул вместо старого. Поломались ссылки на ряд пакетов. Редукс, флаттер редукс и другие. Как починять, подскажите пожалуйста.
Elizaveta Anisina
скачать с сайта, распаковать, заменить, перезапустить идею
Ivan Dembicki
Я же говорю, так и сделал.
Elizaveta Anisina
флаттер клин
Elizaveta Anisina
я в субботу разбиралась, несколько раз делала
Elizaveta Anisina
а еще после обновления кое-что может и правда не работать
Alex
flutter pub pub cache repair
Ivan Dembicki
Reinstalled 141 packages. Но никаких изменений. Может быть нужно переставить версии в pubspec.yaml ? у меня вот такое сейчас: cupertino_icons: ^0.1.2 flutter_facebook_login: ^1.2.0 flutter_redux: ^0.5.3 flutter_bloc: ^0.13.0 dio: 1.0.13 shared_preferences: "^0.4.2" redux: ^3.0.0 redux_logging: ^0.3.0 redux_thunk: ^0.2.1 rxdart: ^0.22.0 url_launcher: ^5.0.0 intl: ^0.15.7 flutter_datetime_picker: ^1.2.0 flutter_masked_text: ^0.7.0 flutter_typeahead: ^1.0.2 equatable: ^0.2.2 json_annotation: ^2.4.0
Ivan Dembicki
Подсказка на сломанном импорте пишет: Target of URI doesn't exist: 'package:redux/redux.dart' Аналогично ряд остальных.
Elizaveta Anisina
[
"внутри матералапп я вставила это\n ",
{
"type": "pre",
"text": "localizationsDelegates: [\n S.delegate,\n GlobalMaterialLocalizations.delegate,\n GlobalWidgetsLocalizations.delegate,\n DefaultCupertinoLocalizations.delegate,\n ],\n supportedLocales: S.delegate.supportedLocales,",
"language": ""
},
""
]
Ivan Dembicki
Проблема решилась апдейтом Android Studio. Удивителен этот мир.
Elizaveta Anisina
хорошо)
Elizaveta Anisina
ну я несколько версий скармливала
KeepOnSmiling ??
[
"Как сделать так, чтобы при каждом ребилде компонента проигрывалась анимация фейда, например?\nВот тут был пример: ",
{
"type": "link",
"text": "https://medium.com/@money.prise/fade-animation-in-flutter-9f421ca24398"
},
" \nно он не стартует с каждым ребилдом компонента (через hot reload)"
]
Serge Shkurko
[
"в методе build\n",
{
"type": "pre",
"text": "Future.delayed(Duration.zero, () => animController.forward());",
"language": ""
},
""
]
admin
[
"Здравствуйте. Хочу реализовать чтобы по левому свайпу итем списка удалялся, а по свайпу вправо другие опции. Свайп влево реализовал как тут:\n",
{
"type": "link",
"text": "https://flutter.dev/docs/cookbook/gestures/dismissible"
},
"\n——————————-\nВопрос как сделать правый свайп, аналогично этому?"
]
Serge Shkurko
[
{
"type": "link",
"text": "https://github.com/letsar/flutter_slidable"
}
]
Fearless Cry
О прикольная штука
admin
ну это либа. я думал как то проще будет. так же как с компанентом Dismissible
Fearless Cry
А либа чем не проще?
admin
да прост я её видел уже. буду юзать.
Fearless Cry
Видели, поэтому не проще?
Serge Shkurko
Может кто-нибудь подсказать как можно поправить баг связанный с подрузкой контента во flutter Действия чтобы повторить: 1. Страница с множеством изображений 2. Во время загрузки изображений отключаем интернет 3. Включаем инетрнет 4. Обновляем страницу при момощи pull to refresh Ожидаемый результат: - Картинки перезагрузятся Фактический результат: - Картинки не подружаются (у FadeImage бесконечная индикация загрузки) помогает только перезапуск приложения
admin
вроде тоже самое будет при переходе от wifi на мобильный интернет и наоборот
Yuriy
покопать имедж кешинг, или грузить картинки в память а потом с памяти выводить и ручками проверять
Yuriy
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/47209606/how-do-i-clear-flutters-image-cache"
},
"\nпри смене статуса сети попробуй"
]
Yuriy
[
"это ? ",
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/23002"
},
""
]
Яўген
Ребят, помогите пожалуйста, сделал все по мануалу и такая фигня... Что делать?
Яўген
Там что-то про потоки, но все ссылки форумы про андроид говорят, про флаттер ничего не нашел... Это получается где-то в андроид-коде шаманить надо?
Alex
это инициализация апа
Alex
первый кадр заблочен загрузкой флатера
Alex
можешь сделать splash screen
Яўген
Так у меня же карта не появляется, хотя по мануалу уже должна...
Alex
не там проблему ищешь ??
Alex
у тебя там ниже по логам authorization failure
Alex
смотри в токены и настройки карты ??
Яўген
Разобрался. Оказывается в гугле, где получаешь ключ проекта, нужно еще активировать api соответствующий О_о Нигде про это не было написано....
Яўген
Просто случайно увидел поиск api, где среди первых были карты для дроида и оси, и понял... А так вообще никак... Скажите кто-нибудь об этом тем умникам, что мануалы фигачат!!!
Fearless Cry
Обязательно передадим
Может кто подсказать, в Dart так же как и в React лучше все разбивать на переиспользуемые компоненты?
И еще, правильно ли создавать Stateless компоненту (которая только отрисовует опираясь на данные) и отдельно для нее контейнерную компоненту (где уже все вычисления происходят и тд) по аналогии с реактом?
admin
Подскажите в какую сторону смотреть Нужно прилку сделать Для создания колажей
Fearless Cry
с такой постановкой вопроса можете попробовать посмотреть в правую сторону
Sergey Lavinov
Да, Flutter поощряет разбиение на небольшие виджеты. Только в отличие от реакта лучше не использовать функции для отрисовки виджетов
Sergey Lavinov
Тут вроде нет четкого разделения на компоненты и контейнеры как в реакте, и тут более распространена практика рендерить под собой child, чем в реакте. Какого-то бест практис не знаю, делайте как удобно
AlexZander Furmanchuk
[
"Всем привет, кто нибудь использовал эту библиотеку ",
{
"type": "link",
"text": "https://pub.dev/packages/image_cropper"
},
" ?"
]
AlexZander Furmanchuk
Я через ImagePicker загружаю фотку из галереи, и этот файл кидаю в функцию и приложение падает. часть логов выглядит вот так
AlexZander Furmanchuk
[
"I/flutter (25166): MainAppView: ViewState.IsAuth\nI/Timeline(25166): Timeline: Activity_launch_request time:503562666 intent:Intent { act=android.intent.action.GET_CONTENT typ=image/* }\nI/mple.neo_porta(25166): Rejecting re-init on previously-failed class java.lang.Class : java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/app/Fragment;\nI/mple.neo_porta(25166): at com.yalantis.ucrop.UCrop com.yalantis.ucrop.UCrop.of(android.net.Uri, android.net.Uri) (",
{
"type": "link",
"text": "UCrop.java:64"
},
")\nI/mple.neo_porta(25166): at void vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.startCrop(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result) (",
{
"type": "link",
"text": "ImageCropperDelegate.java:84"
},
")\nI/mple.neo_porta(25166): at void vn.hunghd.flutter.plugins.imagecropper.ImageCropperPlugin.onMethodCall(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result) (",
{
"type": "link",
"text": "ImageCropperPlugin.java:42"
},
")\nI/mple.neo_porta(25166): at void io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(java.nio.ByteBuffer, io.flutter.plugin.common.BinaryMessenger$BinaryReply) (",
{
"type": "link",
"text": "MethodChannel.java:222"
},
")"
]
AlexZander Furmanchuk
брал из примера
AlexZander Furmanchuk
А в AndroidManifest кроме activity ничего больше не нужно писать?
Anton ?? ? ??
[
{
"type": "link",
"text": "https://github.com/aqwert/flutter_platform_widgets/issues/63"
},
"\nникто не знает решения?\n\nмне даже не получилось завести так: \n",
{
"type": "code",
"text": "return PlatformApp(\n title: 'Flutter Demo',\n home: CounterPage(),\n ios: (context) {\n return CupertinoAppData(\n localizationsDelegates: const >[\n DefaultMaterialLocalizations.delegate,\n DefaultWidgetsLocalizations.delegate,\n ],\n theme: MaterialBasedCupertinoThemeData(materialTheme: theme),\n );\n },\n android: (context) {\n return MaterialAppData(theme: theme);\n },"
},
"\n",
{
"type": "code",
"text": ");"
},
""
]
Понял, спасибо. Просто где-то прочитал, что из-за разбиения, в этом языке, будут лаги???+???>
Яўген
Ребят, кто знает, почему дочерний элемент налазит на родительский?
Fearless Cry
Нужно заклипать
AlexZander Furmanchuk
Исправил, нужно было мигрировать на AndroidX
Stan Mitchel
Всем привет, кто нибудь может подсказать, как сделать чат-окно со sticky датой наверху на flutter (как в телеграме)
Aleksey
открой исходник телеграма, посмотри как сделано, и сделай так же)
Stan Mitchel
Но он же не на flutter написан, может есть какие то плагины
Davron Asrorov
Привет, есть кто сталкивался с проблемой такой?
Davron Asrorov
Причем именно на IOS
Davron Asrorov
Раз на раз, scaffold вот так сбивается
Stan Mitchel
Когда в телеграме поднимаешся вверх по чату появляется небольшой виджет с датой
Serge Shkurko
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=WwhyaqNtNQY"
},
"\n + \n",
{
"type": "link",
"text": "https://github.com/fluttercommunity/flutter_sticky_headers"
}
]
Vitaliy Vasilenko
Помогите новичку. На работе админами зажато все что можно. Не могу получать пакеты через packages get. Есть варианты как обойти такие ограничения?
Влод
а работа не связана с флаттером?
Олжас Сулеймен
Качать ручками и dependency_override
Влод
в браузере прокси какой-нибудь стоит?
Vitaliy Vasilenko
Да. И выход в мир через проксю. Менять нет прав
Олжас Сулеймен
В паб на вкладке версия пакета можно скачать архив с пакетиком
Олжас Сулеймен
Должен работать и на зависимости
Олжас Сулеймен
Или ссылку на гит пакета
Влод
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/20032"
}
]
Vitaliy Vasilenko
Ложить загруженное в ..\Flutter\packages ?
Влод
export https_proxy=…
Ruslan Kryzhanovskyi
Или купить USB SSD какой нибудь, поставить туда систему и работать из под USB драйва
Ruslan Kryzhanovskyi
[
"Просто мне кажется, у тебя ещё не одна проблема из за этого возникнет, ",
{
"type": "mention",
"text": "@vvv_dp"
},
""
]
Vitaliy Vasilenko
Вот и мне так кажется...
Ruslan Kryzhanovskyi
Ещё вариант с Remote Desktop но я хз на сколько там все строго, мол сможет ли он подключится к домашнему пк
Roman
3G модем меня когда-то выручал. Но у меня были админские права
Vitaliy Vasilenko
RDP есть только для локальных серверов, тимвьюверы запрещены, флешки контролируются... Жуть короче. :)
Vitaliy Vasilenko
Ладно, буду пробовать качать и локально распаковывать...
Roman
а со своим ноутом можно?
Влод
погоди так а поставить переменную окружения попробуй
Vitaliy Vasilenko
Это о https_proxy? Читаю...
Влод
ну тип я не уверен, документации по этому поводу не нашел но вроде раз уж ишью закрыли
Vitaliy Vasilenko
Винда. А https_proxy о линуксе
Влод
хотя мб конечно этим система занимается
Влод
странно как-то что браузерный трафик проксируется а с консольки нет
Mihail Dolghintev
Ребят, напомните пожалуйста, что нужно прописать, чтобы vscode не подставлял мне автоматом параметры виджета?
admin
Здравствуйте. хочу использовать в приложении sqliite. добавил зависимости в проект: sqflite: any path_provider: any ——————- начал ругаться что нужно перевести проект на androidX ————————— А теперь мне говорит что This version of path_provider will break your Android build if it or its dependencies aren't compatible with AndroidX. ————————- это я так понимаю path_provider не перевели еще на X? Что делать. вообще зачем нужен path_provider?
Mihail Dolghintev
Допустим пишу container( и сразу жму enter. vscode автоматом мне подставляет первую подсказку
admin
никто не сталкивался?
Яўген
А можно как-то в карте убрать логотив гугла в левом нинем углу?
Yuniia
как нормально вывести строку Text('$k.Name')
Yuniia
так оно выведет значение k и прибавит к нему .Name
Yuniia
Text('$(k.Name)') так тоже не работает
Vitaly Pashichev
Только определенная версия подходит. 0.4.3, что ли, загуглите проблему, там есть версия
Vitaly Pashichev
Не ${k.Name} нужно или я путаю с котлином?
Vitaly Pashichev
[
"0.4.1 ",
{
"type": "link",
"text": "https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility"
}
]
admin
да ну да. теперь вон пишет This version of sqflite will break your Android build if it or its dependencies aren't compatible with AndroidX.
Vitaly Pashichev
Так же и для sqflite. Ток не знаю, есть ли совместимая
Serge Shkurko
Что на счёт подключения к vpn?
Vitaliy Vasilenko
[
"Да я тут получил подробный вывод ошибки и там есть \" CERTIFICATE_VERIFY_FAILED: self signed certificate in certificate chain(",
{
"type": "link",
"text": "handshake.cc:352"
},
")\". Погуглил ошибку - пишут что проблема может быть с антивирусом, его нужно отключать на время получения пакетов. Но нет прав управлять антивирусом :)"
]
Fearless Cry
Вы работаете в тюрьме что ли
Serge Shkurko
Dart не подхватывает системные сертификаты
Serge Shkurko
Сталкивался с таким когда писал тесты к api с самоподписаным сертификатом
Vitaliy Vasilenko
Лечится?
Fearless Cry
можно, но забанят за такое
|