Программирование : Dart & Flutter по-русски
Влод
[
"ну интероп в них будет разный. в мобилках по каналам, в вэбе по ",
{
"type": "code",
"text": "package:js"
},
""
]
Антон
Кто нить знает почему в релизной сборке андроида кнопка бек покрывается красной ошибкой?
admin
недавно делал похожее, только проще получилось как то, тоже через TextField
Yuniia
Было бы проще если бы у TextField было свойство текст, а не события эти. Тогда бы и мне не пришлось всего этого делать
Yuniia
Интересно просто меня одну это напрягает или нет
admin
делал кастомный TextFormField только из одной строчки кода в нём, полностью вырезать с него отображение error text validation у меня этот текст был общий ниже под формой, стримами его туда прокинул и сделал валидацию через StreamTransformer, получилась неплохая реактивная валидация) которая анализирует сразу три TextFormField по паттернам
admin
[
"или тут ",
{
"type": "link",
"text": "https://flutter.dev/docs/catalog/samples/expansion-tile-sample"
},
" спрятан стейт и метод _handleTap() тоже, открываешь стейт, прокидываешь доступ к этому методу и получаешь через key к нему доступ, нужно было после закрытия клавы открыть этот ExpansionTile"
]
admin
у меня уже отдельная папка с кастомными виджетами flutter
Олжас Сулеймен
оно и на экспорт работает тоже, я так рефлексию делал на бэке мирроры на клиенте жс; сам флаттеровском сдк браузерного апи не дает
Vitaly Pashichev
Ребят, кто занимался встраиванием флаттером в андройд приложения не на androidx, вы встречались с тем, что при запуске активности с модулем, он не может найти DefaultLifecycleObserver? Крашит именно в рантайме.
Vitaly Pashichev
С такой ошибкой: Rejecting re-init on previously-failed class java.lang.Class : java.lang.NoClassDefFoundError: Failed resolution of: Landroid/arch/lifecycle/DefaultLifecycleObserver;
Anton ?? ? ??
[
{
"type": "link",
"text": "https://youtu.be/OTwIfUFZmVw"
}
]
Dmitry Bubnenkov
Вопрос) почему Джаву на Андроид считают нативом если она все равно на VM-ке крутится) тогда она не больший натив чем Флаттер
Fearless Cry
Там нет VM уже лет 5
Dmitry Bubnenkov
Да? А как там все? Где почитать?
XbIK
друзья, чем полечить web view от google. Не делает ресайз страницы в экран на Андроиде, скролы по обоим сторонам. В иос нормально. Тот же сайт на нативном приложении открывается как надо
Fearless Cry
На стороне платформы надо фиксить
Eugene
Всем привет, кто-нибудь имел дело с плагином local_notifications на ios, в частности интересуют badge'ы. На андройде нынче просто, сколько уведомлений, такое же число на иконке приложения, а вот в иос нужно вручную ставить, но как это сделать, если локальное уведомление было запланировано и появяется, когда приложение не запущено.
Яўген
Помогите, регулярка почему-то не работает - '^[\w]{4,16}\$' Вроде все правильно...
Яўген
4-16 буквенно-цифровых символов
???????
но могу ошибаться
Alexander Veselov
Уберите слэш перед $
???????
Алсо, убери символ обозначающий окончание строки
???????
и его совсем убрать попробуй
???????
[
{
"type": "pre",
"text": " final String msg = '''\n |---------------\n | MESSAGE \n |---------------\n |line1\n |line2\n |line3\n |line4\n |---------------\n '''.replaceAll(RegExp(r'^\\s*\\|', multiLine: true), '');\n print(msg);",
"language": ""
},
"\n\nВот пример работающей регулярки"
]
Р????????????????? ??????????????????у???????? ????????????????? К????? ????????????? ??????????????????у?????????????? ?? ?? ???
Подскажите, как решить данную проблему?
Р????????????????? ??????????????????у???????? ????????????????? К????? ????????????? ??????????????????у?????????????? ?? ?? ???
сам я хотел подключить firebase к флаттеру
Р????????????????? ??????????????????у???????? ????????????????? К????? ????????????? ??????????????????у?????????????? ?? ?? ???
какой?
Sergey Lavinov
Всем привет, видел, что релизнули в стейбл 1.7. Косяк с клавой на ios они вроде починили, а как дела с лагами на айфонах х, пофиксили? Тестил кто-нибудь?
Семён undefined
а что за лаги? всё так серьезно?
Семён undefined
я просто собираюсь на айос выкатить в этом месяце, но никогда не имел дело с ним
Sergey Lavinov
Очень неприятно
Sergey Lavinov
Кадры терялись независимо от сложности экрана. Это только на девайсах серии Х
Р????????????????? ??????????????????у???????? ????????????????? К????? ????????????? ??????????????????у?????????????? ?? ?? ???
ошибки на ошибках появляются. Можешь показать как у тебя?
northelks
а как кадры теряются?
northelks
у них были ещё проблемы с рендером картинок в 1.7 на айоси, но это уже тоже пофиксили
Sergey Lavinov
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/31086"
}
]
Sergey Lavinov
Нет, у меня, к сожалению, нет такого девайса
Sergey Lavinov
Судя по ишью, еще нет :с
northelks
интересно, чем X так отличается от других
northelks
неужто так GPU разнится?
admin
там проблема что сенсор рывками реагирует или сама отрисовка тормозит?
northelks
[
{
"type": "text_link",
"text": "@liyuqian",
"href": "https://github.com/liyuqian"
},
" Just to note, this performance issue is also noticeable if you hold your finger down while scrolling (it doesn't occur when you fling by releasing your finger). Not sure if that is a separate issue."
]
Sergey Lavinov
Не вдавался в природу лагов, но выглядит это как пропажа кадров при скролле и немного неестественное поведение
admin
у меня на xiaomi a1 тоже сенсор тормозит и кажется что списки тормозят, хотя они не тормозят на самом деле
Семён undefined
там вроде же исправили, написано в конце
Sergey Lavinov
Но это ещё не стейбл
Sergey Lavinov
Но чекнуть надо
Dmitry Bubnenkov
А кто большие проекты собирал на Флеттер, они долго собираются? Что больше всего грузит? Процесс? Память?
Семён undefined
кстати, кто знает как замедлять скорость скроллинга? ну чтобы как бы отставал он немного от пальца
Sergey Lavinov
Хз насколько у меня большой проект, но собирается достаточно быстро, быстрее, чем аналогичные на RN
Семён undefined
по моему скорость вообще никак не меняется от размера приложения, никогда не замечал этого
Семён undefined
ну а озу жрет, да
Anton Zheltov
[
"маке посмотрел. проект мелкий, но собирается 120 секунд\nпроц i7 2012 год\n",
{
"type": "code",
"text": "Running Gradle task 'bundleRelease'... Done 118.0s"
},
"\nпамять 1.5 гига процесс java\nпроц - 1 ядро полностью, процесс Dart"
]
Anton Zheltov
сейчас HT выключу и пересоберу ради интереса ??
Dmitry Bubnenkov
[
"Есть две функции:\n",
{
"type": "pre",
"text": "getApiKey() async { token = http.get() ... }\ngetRegionsList() async { что-то делаем с token }",
"language": ""
},
"\nпервая получает токен, вторая его использует.\n\nКак лучше сделать чтобы во второй токен уже был. Первую сделать синхронной?"
]
Anton Zheltov
[
"wait ",
{
"type": "code",
"text": "getApiKey()"
}
]
Anton Zheltov
[
"а потом ",
{
"type": "code",
"text": "getRegionsList()"
},
""
]
Anton Zheltov
[
"с отключенным hyper threading ",
{
"type": "code",
"text": "Running Gradle task 'bundleRelease'... Done 120.5s (!)"
},
""
]
Anton Zheltov
никакой разницы
Anton Zheltov
на сборку влияет скорость диска, обязательно нужен быстрый SSD
Anton Zheltov
у меня медленный в данное время
Dmitry Bubnenkov
[
{
"type": "pre",
"text": " await Provider.of (context).getApiKey();\n Provider.of(context).getRegionsList();",
"language": ""
},
"\nТипа такого?"
]
Anton ?? ? ??
а какая стадия компиляция занимает больше всего времени?
Anton ?? ? ??
например в свифте если указать типы для всего, то можно сократить компиляцию проекта в 10 раз
??
А где ты там явно Any используешь ?
Anton ?? ? ??
В свифте? Так я не только про Any, а вообще про все типы указывать, например в map, zip, переменах и ТД
Anton ?? ? ??
А вообще там, где требуется динамичный тип
Dmitry Bubnenkov
А Any это типа var?
Sergey ?
с момента как завезли Ahead of Time компиляцию в андроид 5, но vm там как бы и осталась(runtime, gc), просто больше стало машинного кода. Да и теперь в офиц документации это стало просто называться Android Runtime.
Dmitry Bubnenkov
AOT компиляция получается теперь не позволяет анализ кода в рантайме проводить с целью проведения оптимизаций?
Dmitry Bubnenkov
Ну разворачивание циклов и тд
Sergey ?
ну это какраз оптимизации, перефразируй вопрос
N Y
всем хай, кто нибудь знает как отправит json по get?
Dmitry Bubnenkov
Раньше VM могла определить частоту вызова функций и провести прочие оптимизации -- типа циклы развернуть на основании собранной статистики, то теперь получается когда идет AOT компиляция теряется возможность подобных оптимизаций. Верно?
N Y
Делаю так: data={"test1":"value1","test2":"test"}
Sergey ?
все есть, JIT никуда не делся тоже. Они работают вместе теперь. Советую послушать флаттер подкаст, выпуск с инжерером DartVM, там затронули и обычный андроид рантайм
N Y
Но php функция не определяет json: $json = json_decode($_GET['data']); print_r($json);
Семён undefined
в дарте есть что-то по типу define? надо задать переменную на весь код программы, вида PON_PON
Dmitry Bubnenkov
JIT одновременно с AOT?
Семён undefined
не константа, она будет меняться
Sergey ?
AOT выполняется во время установки приложения или во время когда устройство не используется, JIT во время выполнения приложения
Sergey ?
[
{
"type": "link",
"text": "https://soundcloud.com/flutterdevpodcast/5-dart-vm"
},
"\n",
{
"type": "link",
"text": "https://androiddev.apptractor.ru/android-dev-podcast-96/"
}
]
Anton ?? ? ??
json.encode()
Anton ?? ? ??
Ваще хз про Андроид и градл
N Y
print_r($this->request->get['data']); GET получаю как и должен получать: {"test1":"value1","test":"test"}
Олжас Сулеймен
Заверните Мапу в Мапу с ключем data
Олжас Сулеймен
Вынести в файл и импортить?
N Y
Сделал не помогает, и не ожидал что поможет.
DVS (Read The F.ng Manual) Studio (NoHello)
(кидать важные данные через GET... Почему мне больно)
Олжас Сулеймен
Вы его get ом хотит отправить???
Олжас Сулеймен
А куда вы его хотите там присунуть? Там get запросом только хедеры да ссылка, я про http пакет
DVS (Read The F.ng Manual) Studio (NoHello)
Если у вас будет много данных, get сломается. Юзайте POST
Anton ?? ? ??
что значит is! во дарте?
Anton ?? ? ??
[
{
"type": "code",
"text": "state is! LoginLoading ? _onLoginButtonPressed : null,"
},
" вот юзекейс (вообще не гуглится)"
]
Den
False if the object has the specified type
Den
[
"Первая ссылка в гугле:\n",
{
"type": "link",
"text": "https://www.tutorialspoint.com/dart_programming/dart_programming_operators"
},
""
]
Anton ?? ? ??
а, то есть работает как !bool?
Maxim
еще не завезли отдельный файлы-лэйауты для разметки как xml в андройд?
Dmitry Bubnenkov
[
{
"type": "mention",
"text": "@ykmnkmi"
},
" ты говорил что на Флаттер под десктоп пишешь. Если не тайна покажи плиз скрины софта. Просто я видел только Counter, хочется посмотреть что-то посерьезнее"
]
admin
Камрады релизнотесов на 1.8.3 ни у кого нет?
Anton ?? ? ??
релиз нотсы только на стабильные версии
Anton ?? ? ??
то есть раз в месяц +-
Anton ?? ? ??
а так бывает на медиуме статьи редко, можно еще по комитам смотреть
Dmitry Bubnenkov
Как быть если при создании класса хочется вызвать ассинхронную функцию? В конструктор же await функцию не запихнешь...
Dmitry Bubnenkov
Вот тут я же на 23 строке не могу await сделать
Alex
[
{
"type": "pre",
"text": " firstFunc().then((r) => secondFunc());",
"language": ""
}
]
Alex
правда, окончания вызова второй дождаться не получится
Dima
ну там можно whenComplete(() => print());
Alex
я к тому, что из конструктора выйдет до того, как завершится это всё
Dima
я думал будет ждать запринтить и только потом дальше пойдет
Alex
Запринтит когда завершится метод, которого ждём. Но внешний метод к тому моменту может давно уже быть завершён
Dima
а если так? Future.wait([ method1(), method2(), ]),
Dmitry Bubnenkov
[
{
"type": "pre",
"text": " MyApp(this._tenderApiData)\n {\n _tenderApiData.getApiKey().then(\n _tenderApiData.getRegionsList()\n );\n }\n ",
"language": ""
},
"\nВот такой код ругается на:\n",
{
"type": "code",
"text": "Unhandled Exception: type 'Future ' is not a subtype of type '(dynamic) => FutureOr' of 'f'"
},
""
]
Alex
Future.wait возвращает Future, который никто не будет ждать
Alex
[
{
"type": "pre",
"text": " MyApp(this._tenderApiData)\n {\n _tenderApiData.getApiKey().then((_) =>\n _tenderApiData.getRegionsList()\n );\n }",
"language": ""
}
]
Alex
В данном случае method1() и method2() будут запущены одновременно, и исполнение пойдёт дальше, не дожидаясь их завершения
Dmitry Bubnenkov
Да? Я думал then будет выполнено только когда первый метод от работает
Alex
одновременно запустятся
Dmitry Bubnenkov
какую роль играет подчркивание? Ведь по идее можно функцию вообще без тела создать?
Alex
Если then, то да, а если Future.wait([]), то одновременно
Alex
ну надо же сигнатуру правильную у функции. then() требует аргумент (dynamic) => Future
Alex
Подчёркивание по устоявшейся традиции означает, что есть параметр, но он не используется
Alex
[
"Если бы первый метод возвращал что-то, что использовал бы второй — это что-то было бы в параметрах:\n\n",
{
"type": "pre",
"text": " MyApp(this._tenderApiData)\n {\n _tenderApiData.getApiKey().then((key) => \n _tenderApiData.getRegionsList(key)\n );\n }",
"language": ""
},
""
]
Alex
это эквивалентно записи _tenderApiData.getRegionsList(await _tenderApiData.getApiKey())
Dmitry Bubnenkov
[
{
"type": "mention",
"text": "@alexaprm"
},
" по поводу одновременности. А точно ли оно одновременно. Просто как я понимаю все что внутри ",
{
"type": "code",
"text": "then"
},
" вызовется только когда Future будет зарезолвлена"
]
Alex
[
"Я не про then говорил, а про это:\n",
{
"type": "pre",
"text": "Future.wait([\n method1(),\n method2(),\n ])",
"language": ""
},
""
]
Dmitry Bubnenkov
А то что я написал правильно?
Alex
method1().then((_) => method2()), если так, то друг за другом.
Alex
я прислал же исправленную версию, чтоб работало всё. Там проблема в том, что в then надо передавать делегат, а не результат метода.
Dima
[
{
"type": "link",
"text": "https://pub.dev/packages/webview_flutter"
},
"\n- можно сделать прозрачный фон?"
]
Davron Asrorov
Всем привет. Ребят, у кого есть понимание как на флаттере сделать что - то вроде карты здания? Типа общая картина->пртближаешь, детальнее->разбивка по комнатам и т.д
Davron Asrorov
Типа как когда билеты на концерты покупаешь, стадионы по секторам -ближе уже места показывает
Яўген
А как бороться с этой проблемой? Another exception was thrown: Duplicate GlobalKey detected in widget tree
Fearless Cry
Подсовывать разные кеи
Яўген
логично. А как их создать? Разные?
Яўген
Лично я не понял...
Яўген
Пытался вот так, с debugLabel - не работает... static final formKey = GlobalKey (debugLabel: 'key1');
Dmitry Bubnenkov
А вы видео с экранов эмулятора чем-то отдельно захватываете? Или есть встроенная штука?
Fearless Cry
адб есть команда по идее
Fearless Cry
но я через андроид студию записываю
Daniil Kolyasnikov
Ребят, со сборкой беда в последнее время. В релиз версии на половине устройств крашится до запуска
Daniil Kolyasnikov
Что с этим делать?
Daniil Kolyasnikov
Дебаг версия работает нормально.
Evgenii Egorov
Запусти из студии через --release и посмотри логи
Maria
Какая ошибка? Иос и андроид крашатся?
Daniil Kolyasnikov
Запускаю из консоли, там разные логи ?
Daniil Kolyasnikov
На устройстве - белый экран, закрытие приложения
Daniil Kolyasnikov
Просто нет логов. Тупо краш
Daniil Kolyasnikov
Samsung edge 7. На huawei 4c pro также все хорошо
Fearless Cry
Есть зависимость между крашами и версией андроида?
Evgenii Egorov
Разные логи на релизе и дебаге,если нет обычных логов пробуй flutter run -- release -v
Яўген
Ребят, кто шарит, очень нужна помощь с регулярками. А именно. Я написал простую проверку почты, и в тестере она работает хорошо, но почему-то, когда я ее вставляю в приложение, она меня посылает гулять... Очень простая - набор символов, собака, набор символов, точка, и снова набор символов. Понятно, что не экранирует от всяких процентов, запятых и т.д. но даже это простейшая конструкция не хочет работать....
Anton ?? ? ??
Регулярками вряд ли проверишь нормально, используй validators
Яўген
Проверяю регулярку и вроде норм, но тоже самое вставляю в код и уже не работает...
Яўген
Мне, во всяком случае, этого достаточно
Anton ?? ? ??
А, ну я не юзаю валидатор коллбек
Anton ?? ? ??
Просто отдаю строку, и там уже проверяется
Яўген
Ребята, пожалуйста...
Anton ?? ? ??
[
"Ты ",
{
"type": "bot_command",
"text": "/g"
},
" пробовал добавлять?"
]
Anton ?? ? ??
Как здесь на конце
Anton ?? ? ??
Да и / симвод
Яўген
ну, они автоматически приписывались, я не знал, для чего... Это типа что-то вроде кавычек, только для регулярок?
Яўген
Посмотрел документацию, там формат r"регулярка", прикольно
Олжас Сулеймен
проще получить это все заранее и прокинуть в кнструктор, и\или обернуть в FutureBuilder
Sergiy Vergun
Создай в классе метод например init async(){await ...} И засунь сам init в конструктор класса
Fearless Cry
Блэт не делайте так
Кирилл Пешин
Почему? У меня есть void main async, где я ищу камеры cameras = await availableCameras(); все прекрасно работает Или именно в конструктор класса нельзя??
Vasily Laushkin
Я тоже не понимаю почему так нельзя, но FutureBuilder интуитивно выглядит более правильным вариантом. :)
Fearless Cry
В конструкторе не делайте
Slava Marchenko
Так а чего?
Alexander
Конструктор служит для создания экземпляра класса, делая async в конструкторе, ты не можешь гарантировать что в момент обращения к экземляру этого класса он будет инициализирован до конца
Slava Marchenko
Можно делать
Fearless Cry
Давайте ещё в сеть запросы делать в конструкторе
Slava Marchenko
Какие запросы?
Slava Marchenko
Так и не сделаешь, они асинхронные
Slava Marchenko
Хотя можешь с фьючей
Fearless Cry
И что я с фьючей сделаю? Подпишусь в конструкторе? Классно у вас код по ходу выглядит
Slava Marchenko
Да если хочешь подпишись, но лучше сделать функцию load асинхронную и ее вызывать
Slava Marchenko
Проблем не будет
Fearless Cry
Ну я вызову ее а как мне понять что она закончилась? :)
Slava Marchenko
Тю, она же асинхронная
Slava Marchenko
В конце функции будет конец ее выполнения
Vasily Laushkin
Дарт же однопоточный. Все future выполняются в одном потоке, даже если асинхронно
Slava Marchenko
Ну и что?
Fearless Cry
Короче не делайте никакие асинки в конструкторе пожалуйста, поберегите людей, которые будут читать код
Slava Marchenko
Так асинк и не будут делать
Slava Marchenko
Будут вызывать асинк функцию из конструктора
|