Программирование : Dart & Flutter по-русски
Pavel Erokhin
У каждого свое восприятие этого, за исключением UX, то для всех одинаково практически)
Pavel Erokhin
Доведи в таком же виде до реального продакшн приложения и ты уже сам будешь видеть, отзывы людей по дизайну и все такое, смысл критика от дизайнера, когда важнее от пользователя, хотя смотря для кого продукт делается А пока ты как я вижу, только в процессе, рано еще)
Sergey Hottabych
[
"Кто-нибудь пробовал ",
{
"type": "code",
"text": "freezed + kt_dart"
},
"?\nУ меня есть вложенные друг в друга модели (мапа юзеров с мапами домов с сетами комнат). Мне нужно удалить элемент из сета и вернуть всю обновленную коллекцию целиком.\n",
{
"type": "code",
"text": "_users[userId].houses[houseId].rooms..remove(room)"
},
" -> вернуть перестроенный ",
{
"type": "code",
"text": "_users"
},
""
]
Roman Cinis
То что выше должно быть светлее. Что в тёмной теме что в светлой.
Семён undefined
что выше?
Maks Andrienko
всем привет подскажите, я хочу воспользоваться showModalBottomSheet() или плагин modal_bottom_sheet (больше плагин хочу) проблема в том, что я не могу обновить состояние внутри модалки. у меня применяется там промокод. кнопка не меняется на лоудер, ошибка не показывается. но если закрыть и открыть, то состояние конечно меняется. кто то сталкивался с такой проблемой или может я что то не так делаю?
Pavel Erokhin
Посмотри спецификации MDL, понятнее будет о чем он
Roman Cinis
Кнопки на первом скрине.
Семён undefined
это не mdl
Pavel Erokhin
Это MDL, даже не спорь.
Семён undefined
я просто делаю свою дизайн систему на основе материала, там куча отличий
Roman Cinis
backgroundColor скафолда должен быть темнее элементов на нём
Pavel Erokhin
[
{
"type": "bold",
"text": "На основе"
},
", конечно окей, если своя то можно отходить от их спеков"
]
Vadim Lukichev
pub кэширует гитовские пакеты в .pub-cache/git соответственно можно глянуть, что он там тянет из «module», и что в pubspec.yaml там прописано на счет sdk
Roman Cinis
Ну и не видео границы апбара. Если у вас там будет список или таблица — ждите вой
Sergey Hottabych
В любой непонятной ситуации сноси винду ??
Max??
Безысходность она такая)
Roman Cinis
И как правильно заметили Материалом пахнет за версту. Зачем изобретать велосипед и запутывать пользователя? Они будут ожидать тот же UX как и в материале, не все увидят различий. Вообще сваять годную дизайн систему не так уж и просто. Их по пальцам рук можно пересчитать. Из тех что прошли тестом времени.
Roman Cinis
Это не в обиду сказано. Просто имхо
Max??
Проверил кэш, этот модуль идет в кэш с SDK version 2.7.0. Такое чувство что он игнорирует тег и просто тянет develop
Max??
Причем если вместо тэга ставлю бранчу то всё окей а на тег он словно не замечает
Vadim Lukichev
там номер коммита в названии папки есть, можешь просто зятянуть гит и прейти на этот коммит чтобы глянуть, что там чудес не бывает)
Max??
Спасибо, сейчас чекну)
Sergey Hottabych
Ох, как же любят руководители заставлять кодеров пилить свои "UI киты" )) у них пунктик какой-то просто на этом
Семён undefined
я и есть руководитель/дизайнер/программист
Pavel Erokhin
Частично согласен, про то что юзер будет ожидать UX MDL
Roman Cinis
Да оставьте человека. Самые полезные ошибки — свои собственные. В конце концов это полезный опыт.
Pavel Erokhin
> Вообще сваять годную дизайн систему не так уж и просто Тем более одному
Max??
Еще не большой вопрос. А может ли бить такое что создается папка в кэше с номером комита, затем туда подтягиваются все файлы но в результате этого появляется ошибка Filename too long и вместо того чтобы тянуть с тега начинает тянуться версия с develop? И получается вроде папка создана с номером комита но из-за того что в процессе кэширования вылезла ошибка, Filename too long, в папку залетает версия с develop'a?
Vadim Lukichev
Не сталкивался, это может быть "хитрый" баг)) Вообще там и сама репа скачивается тоже можно прямо в кеше git log глянуть и сравнить последний коммит с названием папки
Max??
Действительно может быть. Только что вызвал команду для гита git config --system core.longpaths true После чего пропала ошибка Filename too long и pub get отработал успешно. Мда, в гугле информации об этом вообще нет
Vadim Lukichev
Где-то есть, глубоко, глубоко)) Вообще, имхо, хороший опыт, можно в доку PR сделать. Или даже сразу в pub get код))
Konstantin
Подскажите пожалуйста как прижать текст "7.8" к низу?
Konstantin
flutter какие-то отступы у текста по умолчанию ставит
Avin
бейзлайн чет такое есть там
Konstantin
нашёл решение: в TextStyle свойство height выставил в 0.2
Andrey Novatovski
как растянуть textField( черный) на всё пространство container (красный)?
Savva Morozov
изменить виджет
Savva Morozov
нажми ctrl и посмотри внутри параметры
A Kuper
crossAxisAlignment: CrossAxisAlignment.baseline, textBaseline: TextBaseline.alphabetic, выровняет по низу 7.8 и 5.9 позиционирование для дочерних виджетов в Row() например.
Konstantin
так пробовал, не помогло
Kirill Aparin
Как сделать elevation цветным?
Konstantin
а... textBaseline: TextBaseline.alphabetic нужно в row прописать, не в стили текста. Спасибо за решение!
A Kuper
да, все верно это в row, рад что смог помочь)
Artem Tkachenko
я бы делал через тень
Andrey Novatovski
чото я не врубаюсь как мне textField в растянуть на весь containter... или как его выровнять хотя бы по центру??
Konstantin
[
"можно попробовать вот так\n",
{
"type": "pre",
"text": "Expanded(\n child: TextField(\n expands: true,\n maxLines: null,\n ),\n)",
"language": ""
},
""
]
L
Как отключить системные логи в андроид эмуляторе? вот типа такого: Background concurrent copying GC freed 2361(335KB) AllocSpace objects, 94(5004KB) LOS objects, 49% free, 12MB/24MB, paused 874us total 101.076ms
A Kuper
MaterialButton().copyWith(параметры кнопки), как вариант
Almas Tanayev
А что ты хочешь?
Andrey Novatovski
выровнять textField по центру красного контейнера
A Kuper
Text field по умолчанию занимает всю ширину, попробуй достать его из expanded и в containere указать alignment: в контейнере
Andrey Novatovski
получилось только растянуть его на всю длинну, а как по центру теперь ( по высоте)?
A Kuper
[
"Container(\n alignment: ",
{
"type": "link",
"text": "Alignment.center"
},
"\n)"
]
A Kuper
вот с align center, работает
Andrey Novatovski
я там игрался с maxLenght и maxLines, оказывается это влияет на расположение...
A Kuper
[
"можешь скинуть полностью код от TextField? ",
{
"type": "mention",
"text": "@AndreyStafford"
},
""
]
Andrey Novatovski
всё сделал уже :)
Andrey Novatovski
спасибо
Andrey Novatovski
убрал эти параметры
Kirill Aparin
Подробнее расскажите, пожалуйста
Andrey Novatovski
ля хз, вёрстка на flutter всё-таки еще не очень круто
Andrey Novatovski
мб для простых проектов норм
Roman Vasiliev
Натив ждет
Artem Tkachenko
[
"у Container в decoration можно использовать BoxDecoration с roundrect border у которого также есть boxShadow, например:\n\n",
{
"type": "pre",
"text": "decoration: BoxDecoration(\n border: Border.all(color: Colors.white),\n borderRadius: BorderRadius.all(Radius.circular(5)),\n boxShadow: [\n const BoxShadow(\n color: Colors.myAwesomeColor,\n blurRadius: 2,\n offset: Offset(0.0, 2.0),\n ),\n ],\n ),",
"language": ""
},
""
]
Kirill Aparin
Спасибо большое
Kirill Aparin
Как лучше всего реализовать оплату через карту в приложении?
Flow
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/62018363/flutter-in-app-purchase-implement-for-google-pay"
},
" . Это легко гуглится"
]
Урусай
Хм, флаттер как бы в основном ui фреймворк, собственно в нём 99% кода - вёрстка. Кстати она классная
Booker VG
Стоит помнить о том что с 1.07.2021 ФЗ-54 распространяется и на ИП, стоит это учитывать при интеграции. И если пишется свое решение для этого, то оно должно отрабатывать как часики)) У google есть полная инструкция по интеграции google pay, и далее регистрации себя как продавца, можно попробовать решения от Яндекс или других компаний
Олжас Сулеймен
[
"о как можно, методы не будут работать в АОТ\n",
{
"type": "link",
"text": "https://gist.github.com/ykmnkmi/86be58d10d4428d8b369df2198d1e6e1"
},
""
]
Олжас Сулеймен
так же можно в вебе через dart:js_util
Олжас Сулеймен
есть 4 способа: dart:js_util, dart:mirrors, dart:ffi, Isolate. с изолятами еще не пробовал
Олжас Сулеймен
последние 2 костыли
Олжас Сулеймен
для FFI нужен бинарь дарта, так оно шарит апи
IB Akhrorov
ffi работает только с .so то с динамичнами библиотеками?
Олжас Сулеймен
дарт бинарь частично библиотека, я тут точно не скажу
Никита
всем добрый вечер. Подскажите, какой виджет использовать для фоновой картинки svg и текста. Текст нужно сделать снизу
Andreu
Ну и если текст нужен, то получается stack
Andrew Vasilevskii
кто добавлял в существующий проект поддержку веба? ( выкидывает ошибку при попытке flutter create) есть возможные решения?
Andrew Vasilevskii
[
"при обычно create Ambiguous organization in existing files: {com.xxx.xxxx, ",
{
"type": "link",
"text": "com.xxx"
},
"}. The --org command line\nargument must be specified to recreate project."
]
Andrey Novatovski
никто не сталкивался с тем, что circular_reveal_animation неправильно работает?) ПОказывает серый фон) думаю это ошибка разрабов на других версиях андроида всё кайф
Andrew Vasilevskii
я просто это сначала пробовал такое на свеже созданном проекте, сработало ок, а тут никак
Roman Vasiliev
Дак не думай, а проверь, исходники в открытом доступе
Andrey Novatovski
что проверить
Никита
stack использую, текст всегда на верху
Andreu
Текст обернул в Align?
Никита
нет, использую alignment
Andreu
Общий для всего стека или как?
Andrey Novatovski
чо, никто не работал с circular_reveal_animation? почему на эмуляторе всё круто работает, а на release_apk серый фон, вместо child ?
Andreu
Но align для текста решает проблему
Никита
через минут 15-20 буду за компом
Никита
мне так же посоветовали в другом чате использовать align
admin
Скажите, какой с нуля выбрать язык: Котлин или Дарт ?
Andreu
Смотря какую цель преследуешь
admin
Для начала написать для телефона приложение и понять 1-й ЯП.
Семён undefined
если тебе нужно приложение для телефона, зачем тебе котлин?
Andreu
Ты предлагаешь на джаве что ли?
admin
Просто вроде флаттер по интересней будет, но наверное, сначало Котлин?
Семён undefined
он спросил, котлин или дарт
Семён undefined
а смысл? он тебе не пригодится в практике
Семён undefined
если тебе надо на флаттере приложения делать
Семён undefined
если хочешь мосты делать, то конечно можешь учить и котлин, и свитч, и си плюсы
Andreu
Будешь писать либу, Которая взаимодействует с платформой. Напишешь без знания?)
Семён undefined
но в большинстве проектов мосты не нужны
Andreu
Хотя бы минимального
Семён undefined
не буду писать либу, а скачаю её с интернета
Семён undefined
ну или подожду пока появится
Max
Я бы не советовал начинать изучение программирования с приложения для телефона.
Семён undefined
я вот тоже, писал интерактивный просмотр ручками, а на следующий день его зарелизили в официальной мастер ветке
Семён undefined
и он был намного лучше моего
admin
Ooops, флаттер остаётся выбрать?
Семён undefined
ну а вдруг ему от программирования больше ничего и не нужно
Max
Всё равно не получится.
admin
Хотя если понять ЯП первый, и вдруг куда нибудь можно устроиться?
Семён undefined
оу, сразу мысли про деньги
admin
Какой всё таки посоветуете?
admin
Неа их во внимание не беру, так как я пока ноль, так для кайфа.
Семён undefined
ну если ты уж совсем в программировании не шаришь, то начни сначала с консольных приложений
Семён undefined
на дарте мало документации, но могу предложить похожие на дарт языки: C#, C++, Java
Семён undefined
после того, как поймёшь устройство программ и логику их работы, можешь приниматься и за что-нибудь посложнее
Max
Вот только ни в одном из перечисленных языков нет встроенного Event Loop. Похожесть обманчива.
admin
Короче Котлин брать за жабры(
Семён undefined
хз насчет котлина, я мало его синтаксис видел
Max
Синтаксис очень похож. Но сильные стороны - другие
admin
Джаву боюсь, тяжёлый ЯП.
Семён undefined
за то закалишься
Семён undefined
тяжесть ведь временная
admin
Вообщем ребзя, джаву начну.
Семён undefined
с++ ещё "сложнее" джавы, вот только используется во многих университетах как первый язык
Семён undefined
и ничего, учатся
Max
Звучит как план. По крайней мере, зная Java, очень легко понять, почему в Котлине многие вещи работают именно так, как работают. А не зная Java - практически невозможно.
Семён undefined
только доки поглядывать не забывай, а то я так 3 года программирования не мог понять, что я делаю
Ivan
Тоже самое можно и про флаттер/дарт сказать (в рамках андроид разработки)
Max
Дарт не компилируется в JVM)
admin
Ваш вердикт, господа: Какой ЯП освоить 1-м???
Ivan
А что, MainActivity.dart нормально было бы)
Max
Будет Фуксия - будет и MainActivity.dart. Но пока, кажется, в HarmonyOS раньше запилят)
Семён undefined
кто нибудь кстати собирал фуксию?
Семён undefined
а то там инструкции под линукс и мак только
admin
Тоесть первым сложней дарт пойдет, в основном джаву для нуля лучше?
Max
Да, начать с Java будет проще.
Andreu
Сколько людей - столько и мнений. Каждый тебе посоветует на основе своё бэкграунда
admin
СПС всем, за разбор.
Семён undefined
а самый простой способ не останавливаться в обучении — сделай аналог какого нибудь приложения. ватсап, к примеру приложение и серверная часть
Семён undefined
будь я учителем, я бы так и учил
Andreu
Был у меня учитель, который начинал с самых сложных примеров
Andreu
Все таки стоит с чего-то более простого начать
Andreu
На практике, лично мне, всегда было проще
admin
Вот я и думал, что флаттер будет проще, как бы мол, виджеты упростят , вот.
Andreu
Не в этом смысле) проект проще
Max
Виджеты упрощают разработку, но не понимание. Чтобы писать интерфейсное приложение, нужно хорошо понимать асинхронность, HTTP-стек и уметь интегрироваться с внешними API.
Артем ??
помимо этого, подобрать архитектуру, чтобы разработка не превратилась в свалку, где всё держится не пойми на чём, а потом сам не понимаешь что и откуда
Ivan
Ну и неплохо бы понимать что такое виджет, перед тем как использовать))
Артем ??
[
"не могу понять, почему функции отрабатывают как надо, даже без передачи generic типа в функцию _get ??\n\nв коде можно заметить, что Type объекта является ключом для словаря, поэтому если не определить Type верно, то вызовется ",
{
"type": "code",
"text": ".fromJson()"
},
" совершенно другого объекта, и ничего не сработает. как он определяет передаваемый тип без передачи типа в generic? \n\nнапример, ",
{
"type": "code",
"text": "_get('getPriceList')"
},
" вместо ",
{
"type": "code",
"text": "_get ('getPriceList')"
},
" отрабатывает исправно, хотя не должен!\n\nлибо я на пьяную голову не соображаю уже, либо чего-то не знаю...\n\n",
{
"type": "link",
"text": "https://pastebin.com/j9h4wz2a"
},
""
]
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/Fp2F4opkNy8"
}
]
German Fajardo Sanchez
[
{
"type": "link",
"text": "https://youtu.be/u3z-qQjZ2ZM"
}
]
Oleg Pchelkin
Дык тут скорее всего то же, как ты можешь писать var вместо типа переменной. Анализатор понимает из типа возвращаемого в future какой тип нужно поставить в get и избавляет от необходимости писать тип два раза в одной строке
Stepan
Ребяяят, помогите пожалуйста
Stepan
уже третий час сижу, не могу понять, в чем дело
Stepan
у меня есть контейнер, который отлично рендерится, работает идеально
Stepan
[
{
"type": "mention",
"text": "@override"
},
"\n Widget build(BuildContext context) {\n return Container(\n margin: EdgeInsets.only(bottom: 8),\n child: ListView.builder(\n itemCount: courses.length,\n itemBuilder: (context, index) {\n return CourseItem(courses[index], index);\n }),\n );\n }"
]
Stepan
но как только я его оборачиваю в column
Abdulgafur Bersugir
[
{
"type": "link",
"text": "https://neprivet.ru/"
}
]
Stepan
[
"вот так:\n ",
{
"type": "mention",
"text": "@override"
},
"\n Widget build(BuildContext context) {\n return Column(\n children: [\n Container(\n margin: EdgeInsets.only(bottom: 8),\n child: ListView.builder(\n itemCount: courses.length,\n itemBuilder: (context, index) {\n return CourseItem(courses[index], index);\n }),\n ),\n ],\n );\n }"
]
Stepan
то выдает ошибку и перестает рендериться
Stepan
======== Exception caught by rendering library ================================= The method '>' was called on null. Receiver: null Tried calling: >(1e-10) The relevant error-causing widget was Column
Almas Tanayev
Заверни контейнер в экспандед
Stepan
спасибо, сейчас попробую
Stepan
вроде бы помогло, спасибо большое??
Stepan
а почему вообще он ругается на это?
Артем ??
интересно, с каких пор анализатор это делает
Ivan Pavlov
[
"Доброе утро!\nЕсть здесь мастера ",
{
"type": "underline",
"text": "Hive"
},
"?\nНасколько «goog / bad practice» является использование непосредственно коробки Hive внутри виджетов (что приведено в примерах офф. документауии):\n",
{
"type": "code",
"text": "ValueListanableBuilber(\nvalueListanable:\nHive.box (\"boxName\"). listenable(),\nbuilder:...)"
},
"\nИли сие следует выносить из виджетов в раздел бизнес логики?"
]
IB Akhrorov
Здравствуете Для каждого api нужно создать отдельный (state и cubit) (state, event and bloc)?
IB Akhrorov
у меня два виджета зависит от 2 api и мне нужно создать две отдельные блоки?
4??uzhoy .
как сделаешь так и будет, можно сделать репозиторий который отвечает за данные и там делать обращение к апи и возвращать че тебе надо в итоге
IB Akhrorov
есть хороший пример кода ?
Kirill Aparin
Как нужно собирать, чтобы такой ошибки не было, собирал app Bundle
Урусай
Народ, помогите пожалуйста с firebase. Они не хотят принимать карту для оплаты. Зарегал виртуальная карту киви, кинул на неё бабки, ввёл её данные для оплаты файрбейза - получил отказ с причиной "пришлите нам другое изображение подтверждения вашего владения картой" (скидывал скрин с личного кабинета киви). Написал в ТП, ответили что я скорее всего использовал не такую карту какую им надо, делая уклон в то что тип карты скорее всего не поддерживается в моей стране, дали ссылку где написано что для России можно указать только кредитную карту, с возможностью автоплатежей и бла бла бла. Что делать то? Идти в банк регать кредитную карту только для файрбейза? Нахер она мне нужна. Есть какие нибудь обходные пути?
NewBalanceM5
[
{
"type": "bold",
"text": "Flutter architectural overview:"
},
" На ",
{
"type": "link",
"text": "flutter.dev"
},
" опубликовали подробный обзор архитектуры ",
{
"type": "bold",
"text": "Flutter"
},
".\n",
{
"type": "link",
"text": "https://flutter.dev/docs/resources/architectural-overview"
},
""
]
Eldar
подскажите для принятия оплаты с карт какими сервисами пользуетесь ?
Mitai
когда смотрел последний раз она не умела в обычный стационар, только как виртуалка, но кому это надо
Kirill Aparin
Как правильно собрать?
|