Программирование : Dart & Flutter по-русски
Dart & Flutter по-русски
Программирование : Dart & Flutter по-русски
Aleksey Kharitonov
[
"Попробуй этот: ",
{
"type": "link",
"text": "https://pub.dev/packages/keyboard_attachable"
},
"\n\nЯ пробовал на одном таске, мне понравилось, хорошо выполнял свою функцию"
]
TriXee { #include Life:me }
Создать стэйтлесс виджет, может быть?
Азамат Шегенов
так же я создал stateless
TriXee { #include Life:me }
Оумай, спасибки, я почему-то и не додумалась поискать решения в паб дев, мне казалось, что это можно в самом флаттере сделать как-то
Миша
так задай класс, где пропиши final IconData icon; final String title; const ButtonItem({ Key key, this.icon, this.title}) : super(key:key);
Aleksey Kharitonov
Наверняка, эта библиотека тоже чьё то решение на основе флаттера :) просто так быстрее :)
Миша
[
"это все перед ",
{
"type": "mention",
"text": "@override"
},
""
]
TriXee { #include Life:me }
Тебе в stateless виджете нужно создать переменные, в которые ты будешь пробрасывать переменные снаружи
TriXee { #include Life:me }
Да, но я по прошлому опыту из обычной андроид разработки по привычке стараюсь придумать что-то без помощи библиотек
TriXee { #include Life:me }
[
"А тут есть такой прекрасный ",
{
"type": "link",
"text": "pub.dev"
},
""
]
Aleksey Kharitonov
Отличный навык!
TriXee { #include Life:me }
Да, но времени это жрёт очень много
Sergey Hottabych
Это строка форматов, используется в языках типа Си, Го. В Дарте все проще, там интерполяция строк
TriXee { #include Life:me }
Именно скоростью разработки мне флаттер и нравится
Азамат Шегенов
Не знаю кому отвечал, но мне помог
Aleksey Kharitonov
Знаешь, иногда я на столько залипаю в поиск решения, что трачу на это пару дней. А мог бы за час решение сам напилить
Миша
Эх, так приятно:) Раньше сам спрашивал по 1000 вопросов в день, теперь помогаю, аж бабочки в животе
TriXee { #include Life:me }
А мне вот интересно, когда приложение билдится, эти все библиотеки вместе в приложение идут?
TriXee { #include Life:me }
Нет какого-то решения, чтобы определять только то, что действительно нужно для работы приложения?
Урусай
По идее компилятор должен этим рулить. Язык не динамический, так что наверное рулит
Sergey Hottabych
Нет, не идут. Это в вебе надо минимум библиотек, потому что там все подряд идет.
TriXee { #include Life:me }
Интересно, то есть, оно билдит приложение только с тем, что нужно?
TriXee { #include Life:me }
А почему тогда если сделать два одинаковых приложения, но одно нативное, а другое на флаттере, то другое будет весить на 50мб больше?
TriXee { #include Life:me }
Я сомневаюсь, что движок флаттера будет столько весить
Alex Fox
Может это дебаг сборка на Флаттере?
TriXee { #include Life:me }
Нет, я проводила тесты, и билдила приложение без дебага
TriXee { #include Life:me }
Просто было интересно
TriXee { #include Life:me }
Приложения на флаттере весят больше, чем нативные
TriXee { #include Life:me }
Вот у меня и появилось предположение, что при билде оно компонует в себе все библиотеки и зависимости
Alex Fox
Может fat-apk было с тремя сборками в себе под все архитектуры
Alex Fox
Я просто проверяю варианты, может действительно все так ,и весит оно действительно гораздо больше
TriXee { #include Life:me }
Попробуй написать какое-то простое приложение на флаттере, и нативное с таким же функционалом
TriXee { #include Life:me }
Допустим, какой-то простенький калькулятор, он будет весить мегабайт 5 на нативном
TriXee { #include Life:me }
На флаттере же около 20-30
Alex Fox
Допустим простой калькулятор, я писал простое приложение - накатывание фильтров на фотки. Толстое АПК - 17 Мегабайт, при split-per-abi около 5-6 для определенных архитектур На нативе не собирал, но не думаю, что оно бы весило ещё меньше или разница была бы колоссальной
TriXee { #include Life:me }
Ну, накатывание фильтров на фотки не самое простое приложение, на самом деле
TriXee { #include Life:me }
Я не говорю, что это плохо
TriXee { #include Life:me }
Просто мне интересно, с чем связан больший вес, чем между нативным приложением
TriXee { #include Life:me }
Я не верю, что движок на плюсах может весить больше 10 мегабайт
Alex Fox
Тем более, а весило меньше) Но вот дебаг сборка для отладки жирнее - 50-60 уже
TriXee { #include Life:me }
На плюсах он как раз около 10 весить и должен
Alex Wow
Библиотеки Больше ресурсов И тп
Alex Wow
В том то и прикол нативных
TriXee { #include Life:me }
Так вот это мне и было интересно
TriXee { #include Life:me }
Собирает ли приложение в билде в себя библиотеки, которые использует
Alex Wow
На десктопе на Винду нет ))
TriXee { #include Life:me }
Если да, то всё понятно, если нет, тогда хз
Alex Wow
Он рядом кладет Дллки
TriXee { #include Life:me }
Мы говорим про андроид платформу
Alex Wow
А там использует Ява либы Чё нет то
TriXee { #include Life:me }
Флаттер не использует далвик
TriXee { #include Life:me }
У него свой движок
Alex Fox
[
"Покопался и нашел одну строчку \n",
{
"type": "code",
"text": "Some of the other things you can do to make your app smaller are:\n\nRemove unused resources\nMinimize resource imported from libraries\nCompress PNG and JPEG files"
},
"\n\nТо есть он собирает по сути весь импорт библиотеки, но если ты импортируешь лишь самое нужное, то размер будет меньше\nНо это лишь пока догадки, стало интересно покопаться\n\nСсылка \n",
{
"type": "link",
"text": "https://flutter.dev/docs/perf/app-size"
},
""
]
TriXee { #include Life:me }
Ну, тогда всё понятно
TriXee { #include Life:me }
Он билдит библиотеки к себе в приложение
TriXee { #include Life:me }
И почти всё, что не используется - мусор, который забирает себе место
TriXee { #include Life:me }
Вот это мне и было интересно, но задумалась я только сейчас
Урусай
Minimize resource imported from libraries Не обязательно речь идёт о коде
TriXee { #include Life:me }
А что ещё библиотеки могут в себя включать, кроме кода?
Семён undefined
а в чем смысл в наше время заморачиваться о размерах? интернет у большинства быстрый, внутренняя память не 1 гб смысл так напрягаться ради парочек мегабайт, тем более гугл плей оптимизированные ресурсы скачивает при установке
Урусай
Картинки и прочие ассеты
Serge Kozlov
Ребят в чем может быть проблема при запуске приложения.. ошибки идут. Сегодня на работе менял имя пакета, перезалил все на github, пришел домой, обновил у себя все и при билде выскакивает это
IB Akhrorov
Недостаточно памяти dex
TriXee { #include Life:me }
*голос старого деда* Эх молодёж нынче память вообще не бережёт, какой-то этот новомодный флаттер жрёт их память просто так, а они ничего не делают
IB Akhrorov
Нужно увеличить память dex
TriXee { #include Life:me }
Эх, а раньше оптимизацией занимались
Пашка
надо вам с микроконтроллерами поработать
Serge Kozlov
а что это значит и как побороть?
Alex Fox
Там есть ссылка на официальную доку, как это решить
Урусай
Дело в том, что пакеты имеют свойство ссылаться друг на друга. И ссылаться они могут довольно глубоко и в итоге этих ссылок может быть не на пару мегабайт ))
Семён undefined
сейчас оптимизация должна направлена на ux, а не ваши бляди
Serge Kozlov
Посмотрю, спасибо
Alex Fox
Learn how to resolve this issue at:
Serge Kozlov
Спасибо, разобрался! В первый раз такое. а что эта за ошибка Package install error: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE] или можно не обращать внимание
Kit Khilobok
А потом приложения, которые весят дофига, съедают всю оперативку и лагают, ага-ага Я просто напомню, что лимит оперативки на приложение около 90мб, а гугль не принимает апк, которые весят больше 100мб без танцев с бубном с недавнего времени
Александр Виноградов
[
"Сталкивался кто с подобным? делаю обычный запрос через final res = await http.get(\"",
{
"type": "link",
"text": "http://time.google.com"
},
"\"); и по результату плучаю ошибку Error: XMLHttpRequest error. и в логах хрома вижу блокировку CORS. гуглеж толком не дал ничего, скорее вызвал больше вопросов. Это проблема только локалхоста или надо фиксить будет и на основном хосте тоже?"
]
Dima Kotlyarov
Почитай про корсы . Сервер не даст тебе не какую информацию в респонсе
Kit Khilobok
cors proxy нужно использовать на локалхосте
Dima Kotlyarov
А это Гугл апи . Хм , возможно чёт в заголовках не хватает
Daniil Kolyasnikov
Тебе в любом случае в браузере нужен будет свой бэкенд. Именно в браузере гайки закручены по вопросам запросов к ресурсам на другом домене
Темирлан
А как можно в AppBar поставить Title по середине?
FantasyOR
во флатерДевПодкасте, говорили что разница около 16 Мб между нативным и флатером
Александр Виноградов
Блокирует не все запросы, к примеру с jsonplaceholder все получаю без проблем а вот время гугла или иные сервисы вообще никак. Протестил на питоне в гуглколабе тот же принцип запроса и там никаких доп надстроек не понадобилось
Темирлан
и еще вопрос, как в Title вместо текста поставить фотку, у меня svg я делаю через SvgPicture
Daniil Kolyasnikov
Не тот же принцип
Andrew Shalaev
Объясните мне, почему люди путают bloc и provider. Они же для разных целей предназначены?
Tagir
какие книги посоветуете почитать по Dart именно?
Александр Виноградов
Только для тестов на локал хосте подобное необходимо или в релизе тоже оставлять придется?
TriXee { #include Life:me }
Это без учёта библиотек, которые приложение в себя включает?
Kit Khilobok
Для тестов в локалхосте покатит, в релизе может не работать
Семён undefined
причем тут оперативка
????
сема из чс выкинь ты
Serge Kozlov
у меня теперь файл не сохраняется, висит сохранение
Миша
Мое мнение: они вместо провайдера имеют ввиду навигатор, скорее всего... Лично я пару раз уже сонный путал не из-за незнания, а потому что каша в голове:)
IB Akhrorov
У меня также) dart тормозит
Serge Kozlov
ясно, спасибо)
Темирлан
[
"Как решить проблему с bottom overflowed by ?? Pixels\n\nзадаю ",
{
"type": "code",
"text": "height: MediaQuery."
},
{
"type": "italic",
"text": "of"
},
{
"type": "code",
"text": "(context).size.height,"
},
"\nНо так как сверху есть один контейнер он не умещаются\n\nкак сделать так, чтобы виджет растянулся до максимума\n\nно не ушел вниз дальше"
]
Темирлан
а width и height задавать?
Миша
он автоматически сам заполняет
Sergey Hottabych
Кто путает? Никто не путает.
Sergey Hottabych
multidex надо врубать
Sergey Hottabych
Насчет Флаттера не уверен, а у Юнити размер файлов движка примерно 20 Мб, то есть меньше билд ты просто не соберешь. Так что вполне вероятно.
Andrey
есть те, кто с автодополнением от гугла работал? не пойму как заставить его выдавать предложения с дополненными номерами домов, а не такие же улицы в других населённых пунктах, по типу как оно работает в авито
Григорий
Есть какой нибудь вариант как можно отследить что так сильно жрет оперативку в приложении?
AL
Ребята, подскажите сколько времени займёт настройка nodejs api
Григорий
Странный вопрос) смотря на сколько ты разбираешься в этом
AL
То что странный согласен, ну дело такое, нужно работать с готовым апи, ну напрямую туда запросы кидать не вариант, поэтому свой бэкэнд нужен для обработки запросов, не знаю что выбрать,так как опыты в этом нет
Григорий
Ну да, для такого по моему удобней nodejs, ну вообще быстро, опять же смотря сколько запросов тебе надо и как ты их обрабатывать хочешь
Григорий
Через библиотеку express делаешь сервер и там уже делаешь все что тебе надо
AL
А статьи или уроки не подскажешь? Могу конечно нагуглить, но может есть лучше
Григорий
[
"Ну я не могу сказать где лучше, так как особо не разбираюсь в отличиях, но я брал от сюда ",
{
"type": "link",
"text": "https://m.habr.com/ru/post/193458/"
},
""
]
Constantine
задачу бы услышать сначала ) так-то если нужен шлеп-шлеп апи с БД, то подойдет экспресс, джанго, пхп
Constantine
другой вопрос в том, хватит ли скиллов запустить хотя бы весь стек локально на компе )
Constantine
если есть сложности с этим, то локально я бы смотрел насчет БД в сторону sqlite, если в планах делать все нормально в прод и без сторонней помощи, то придется взять отпуск от флаттера на месяц и зарыться в изучение веба
AL
Да думаю как раз экспресс подходит, посмотрел видосик,вроде под мои нужны самое то
Alex Fox
Если тебе не вариант кидать запросы на готовый апи - возьми и застабь все локально и тестируй-разрабатывай на здоровье ,зачем ноду трогать в принципе Если конечно нет задачи бек самому делать под проект
Dima Kotlyarov
Да , это норм
Alex Fox
Зачем палки в колёса если можно в дарте всю логику апи засимулировать. Если я как понял, АПИ будет сделано без участия твоего
AL
Проблемка у меня так как решил попробовать на флатЭр вЭб сделать, теперь когда запрос делается на вЭбе, то ругается CORS, поэтому как я понял нужен бэк, а с мобильной версии все ок
Alex Fox
[
"На вашем бэке это просто должно быть настроено \n",
{
"type": "link",
"text": "https://developer.mozilla.org/ru/docs/Web/HTTP/CORS"
},
"\n\nКогда писал бэк на спринге в Джаве, это через аннотации все прописывалось"
]
AL
У меня к бэку доступа нет
Alex Fox
[
{
"type": "link",
"text": "https://medium.com/swlh/flutter-web-node-js-cors-and-cookies-f5db8d6de882"
},
"\n\nЕсли уже вдруг было настроено на бэке всё, попробуй часть для веба со статьи ,может поможет"
]
AL
Ок, спасибо, буду пробовать
Ваня Ваня
Ruby on Rails ещё отлично подойдёт)
Constantine
да, точно ) там достаточно простой старт )
Ваня Ваня
Если что, то по rails могу отвечать на вопросы, так как достаточно опыта имею в этой технологии)
Andrey
Можно простыми словами для понимания, что такое handler, объясните, пожалуйста)
Alex Fox
Handle - обрабатывать, принимать, решать Это по сути обработчик чего-либо. Обычно какого-то произошедшего события или нужной функции
Темирлан
[
"Я использую либу moor, а точнее moor_flutter\n\nна андроиде все отлично работает, а вот на ios совсем нет. В чем проблема. блин с икскодом вообще не шарю как пользоваться \nвот лог\n",
{
"type": "link",
"text": "http://txt.do/18pak"
},
""
]
Темирлан
До этого все работало, пока не стал использовать moor_flutter
Темирлан
Оказывается у меня один column назывался delete из-за этого не работало
Denis
В таких моментах мне всегда помогало удаление podfile.lock и pod upgrade
Сергей Бугай
Нужен сделать примерно такое. Должен быть фиксированые хедер и футер и внутри listview. При этом когда открывается клавиатура футер не должен уходить вверх. resizeToAvoidBottomInset не подходит так как не будет скролить к инпутам. Футер и хедер не должны иметь фиксированую высоту. Что то ни как в голову не придут как сотворить(
Stark
у гугла есть привычка сворачивать проекты
Comrade77
Ну да, именно по этому они заявили об онлайн конференции 3 марта по flutter, видать заявят об его закрытии. А с 3 февраля два раза в неделю проводят трёх часовые стримы на которых обучают flutter и отвечают на вопросы, по-любому хотят его прикрыть!
icesvz
в масштабах гугла это примерно ничего ) но в разработку вроде вкладывают сильно
Aleksey Kharitonov
Спасибо! Попробую!
Vyacheslav
[
"Посмотри гайд ResoCoder, он пишет неплохо, и про архитектуру все по полочкам ",
{
"type": "link",
"text": "https://resocoder.com/2019/08/27/flutter-tdd-clean-architecture-course-1-explanation-project-structure/"
},
""
]
Константин Бобров
Прошу объяснить чем отличаются стейтлесс и стейтфул виджеты в плане отрисовки данных из стрима и как они перерисовываются при поступлении новых данных?
Азамат Шегенов
Stateless не отрисосывавает
Владимир
Ты оборачиваешь стейтлесс виджет в билдер и при изменении он перерисует его
Константин Бобров
Спасибо
Константин Бобров
Он перерисовывает же и вложенные виджеты?
Владимир
Я сам всего месяц с флаттером вожусь)
Anatoliy Kernokus
Кисточка для чистки пупка
Сергей Бугай
ссылочкой на стримы не поделишься?
Comrade77
[
{
"type": "link",
"text": "https://www.youtube.com/channel/UCNUzIz3TsiHSbgn_66kLIww"
}
]
Константин Бобров
как к svg можно тень добавить?
Hamdam ?
Есть кто пользовался с flushbar?
Roman Vasiliev
что значит "одинаковое"?
Roman Vasiliev
можно тащить кучу разных библиотек и думать что они одинаковые с нативом
Roman Vasiliev
в hello world в релизе такой разницы никогда не будет
Roman Vasiliev
Залезаешь в нативный и флаттеровский апк и сравниваешь
Максим
привет, кто-то работал с камерой? с какими-то проблемами сталкивались?
Константин Бобров
хрен знает почему, но после создания фото на сяоми происходит преход на предыдущую страницу
Максим
у меня задача сделать полноэкранную камеру, использовал camera и awesome camera. Получается вот так. никто не сталкивался?
Roman Vasiliev
картинку сам позиционируешь?
Roman Vasiliev
[
"Если да, то выбирай что тебе больше подходит\n",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/painting/BoxFit-class.html"
},
"\nОбворачивай в FittedBox"
]
Азамат Шегенов
Здравствуйте
Азамат Шегенов
Подскажите, кто знает
Пашка
изучите работу с api
Пашка
документацию на сайте
Азамат Шегенов
В Column вложил Container-icon
Азамат Шегенов
И снизу text
Азамат Шегенов
Чтобы каждый раз не прописывать параметры контейнера для icon, как вывести отдельно в класс
Valentin Nechay
Сделай новый Stateless виджет и при вызове передавай туда иконку и текст
Азамат Шегенов
cделал виджет
Азамат Шегенов
там что именно указать
Valentin Nechay
Покажи виджет
Азамат Шегенов
правильно?
Азамат Шегенов
конечный итог, вставляю созданный виджет вместо контейнера с параметрами
Valentin Nechay
А вызывать вот так
Artem Shkryab
Приет. Google Pay кто-то подключал в приложении? там нужна какая-то особая регистрация?
Азамат Шегенов
минуту перевариваю??
Valentin Nechay
Правило повторного кода, выноси в отдельный класс/виджет
Andrew Shalaev
[
"Да\n",
{
"type": "link",
"text": "https://developer.android.com/google/play/billing/getting-ready"
},
"\nплатежный профиль привязываешь на странице своего приложения сначала\nпотом добавляете способ оплаты на банковский счет"
]
Artem Shkryab
Мне кто-то говорил что им апк в саппорт нужно давать, они там ручками тестят, потом дают добро.
Sergey Hottabych
[
"Пацаны, я тут обнаружил, что вместо flutter_driver теперь пакет integration_test. И код для интеграционных тестов немного изменился.\n",
{
"type": "link",
"text": "https://flutter.dev/docs/testing/integration-tests"
},
""
]
Artem Shkryab
ну, я кинул апку в релиз, и google pay не работает.
Artem Shkryab
это не ин-апп-пурчейзы
Азамат Шегенов
что то не то
Валерий
Наверное нужно объявить переменные, и конструктор под них сделать
|