Программирование : Dart & Flutter по-русски
???????
Сейчас акведук попытается убрать у себя их
???????
Там таже проблема
Dmitry Zakharov
единнственное что надо сделать порт nestjs какой-нить на mirrors
Dmitry Zakharov
или спринга
Dmitry Zakharov
что по сути похоже
Dmitry Zakharov
я не понимаю почему во флаттер не завезут mirrors нах нужна эта генерация
???????
Была, но выпилили
???????
Примерно год назад
???????
В общем на бэке её использование не даст собрать бинарь. Из акведука её уберут наверняка.
Олжас Сулеймен
начал забросил, и на миррорах и версия на генераторах обертка над shelf пока роутер
Silent Bezmolvny
Всем привет!
Dmitry Zakharov
ну это ты зря)
Dmitry Zakharov
если сделаешь копию - тебе спасибосы будут особенно когда флаттер уже так взлетит что все нативщики перейдут
Dmitry Zakharov
а тут будет фуллстек дарт артист
Олжас Сулеймен
мы же про nestjs или nextjs?
Dmitry Zakharov
nextjs не заслуживает вообще внимания)
Олжас Сулеймен
[
{
"type": "link",
"text": "https://github.com/ykmnkmi/shrine/"
}
]
Олжас Сулеймен
[
{
"type": "link",
"text": "https://github.com/ykmnkmi/shrine_generator/"
}
]
Олжас Сулеймен
самое простое
Dmitry Zakharov
выглядит нормас
Dmitry Zakharov
продолжай братишка
Dmitry Zakharov
[
"и еще есть ",
{
"type": "mention",
"text": "@nest_ru"
},
" сообщество) welcome"
]
Олжас Сулеймен
у них репа и доки хорошие, и ts код нормальный
Dmitry Zakharov
ну имхо на этапе билда если бы генерился бы код под AOT, а если не нужно то пусть будут мирроры
Dmitry Zakharov
флаттер вроде бы мирроры поэтому и не тащит чтобы тришейкинг норм был
Dmitry Zakharov
ну ок, просто заберите обязанность генерить с разрабов на фреймворк и было бы ок
???????
В браузере разве рефлексия есть?
???????
Тобишь dart2js тоже mirrors не должен пропускать
Oleg Skiryuk
На DartUp показывал один чел из райка, как работает компиляция под веб - на выходе верстка так себе
Silent Bezmolvny
Кто знает сайт, где собраны все моб. приложения с открытым исходным кодом на Dart/Flutter?
Dmytro Bondarchuk
itsallwidgets
Silent Bezmolvny
Примите благодарности! ??
Cmndwn
?? А можно как-то выбирать нужные контакты через стандартный интерфейс ОС? Чтобы не делать отдельную вьюху в приложении для телефонной книги. Или только фетчить как массив данных?
Ivan Danyliuk
[
"Такой кейс (воюю уже второй день) — есть ",
{
"type": "code",
"text": "ExpansionTile"
},
" в котором при экспаншене нужно показывать TabBar/TabView. В ",
{
"type": "code",
"text": "ExpansionTile"
},
" виджеты, которые будут видны при открытии передаются через children. Вот туда я пытаюсь вставить свои табы, но у табов может быть разная высота (там список), и вот тут флаттер сходит с ума – выбрасывает эксепшены, говорит, мол, высота неопределенная, нужно как-то баундить. Если я оборачиваю TabView в какой-нибудь ",
{
"type": "code",
"text": "LimitedBox(maxHeight: 400)"
},
" – то все работает. Но мне не нужна фиксированная высота, и скроллов я не хочу внутри. Если список должен быть длинным – пусть будет длинным, если коротким – пусть коротким.\n\nИ вот никак не могу такое поведение получить. Пробовал оборачивать TabView в Expanded/Flexible, заворачивать TabBar/TabView в ещё один Column – ничего не помогает.\nМожет будут у кого идеи какие-то?"
]
Dmytro Bondarchuk
[
"назовём твой виджет с табами TabsWidget\nтогда попробуй сделать так:\n",
{
"type": "code",
"text": "SingleChildScrollView(\n physics: const NeverScrollableScrollPhysics(),\n shrinkWrap: true,\n child: TabsWidget(),\n)"
},
""
]
Andrii
А если завернуть в Column с mainAxisSize: MainAxisSize.min?
Ivan Danyliuk
[
"> А если завернуть в Column с mainAxisSize: MainAxisSize.min?\nПробовал. Ноль реакции.\n\n",
{
"type": "mention",
"text": "@dimoll"
},
" спасибо, но мне пишет что у ",
{
"type": "code",
"text": "SingleChildScrollView"
},
" нет такого свойства shrinkWrap..."
]
Ivan Danyliuk
А есть какой-то онлайн flutter playground (через flutter web, например) на котором можно примером поделиться (а-ля jsfiddle)?
Dmytro Bondarchuk
Тогда вместо него используй ListView
Dmytro Bondarchuk
Dartpad
Ivan Danyliuk
О, спасибо. Сейчас попробую репродьюснуть проблему на DarPad-е.
Dmitry Zakharov
хз в бразуере есть js а там есть возможность юзать рефлексию через либу
Dmitry Zakharov
точнее через прокси получается
???????
Ну вот вопрос в том, умеет ли это dart2js
???????
но я в этом сильно сумневаюсь
Dmitry Zakharov
я согласен) стопудов не умеет
???????
Так что ждать mirrors во флатере яб не стал)
???????
И более того, оно не уместно.
???????
Тобишь если io и html можно разделить через кондишен импорт
???????
То рефлексия это больше про бизнес логику)
Dmitry Zakharov
ну кароче мне близка тема декораторов как в тайпскрипте или как с помощью анотаций в джаве можно разруливать вещи если юзать аспектj
Dmitry Zakharov
хз код чище просто будет в сто раз
Dmitry Zakharov
особенно в mobx каком-нить итд
Dmitry Zakharov
тот же ангуляр на typescript умеет собираться в AOT
???????
Ну это уже сам помогай делать мирорсы дарт тиме)
???????
Я буду первый кто пожмет тебе руку, тк сам хотел бы)
???????
Но не думаю, что тут это комут по зубам)
Dmitry Zakharov
сам понимаешь если заморочиться все всем по зубам но не все хотят вникать в это и тратить время
Dmitry Zakharov
хочется готовенького) но на самом деле поскольку платформа свежая - делая вещи ща - тут можно прославиться
Dmitry Zakharov
скажем чуваки забросили LatLng пакет) кто-нить может стать ментейнером
???????
Ну вот я все хочу computer переосмыслить)
???????
И сделать его работающим в вебе
???????
И перевести его на стримы.
Ivan Danyliuk
dartpad прикольный
Ivan Danyliuk
вот мой пример:
Ivan Danyliuk
[
{
"type": "link",
"text": "https://dartpad.dev/3248285c7d136f5589769c8d15027a99"
}
]
Ivan Danyliuk
Если закомментить/убрать LimitedBox, то вылетает эксепшн
Олжас Сулеймен
любую либу так можно
???????
Прост именно тут это супер полезно
???????
Чтоб работало и в вебе и в мобилках/десктопах
Олжас Сулеймен
с мирррорами и генератором плохо разные точки входа
Ivan Danyliuk
Собственно задача в том. чтобы высота того что в children была равно высоте того, что в TabView (в данном случае это высота контейнеров в 300 пикселей)
Dmitry Zakharov
представь что мы юзаем тока мирроры а дарт под капотом компилит код в AOT при сборке
Dmitry Zakharov
это реально
Dmitry Zakharov
но не сделано
Dmitry Zakharov
но как бы имхо пока можно и так жить
Dmitry Zakharov
а там будет видно
Олжас Сулеймен
я про подключение в коде
Олжас Сулеймен
или не так понял
Dmitry Zakharov
я про это имел ввиду чтобы не было проблем - будут создаваться классы и на них мапить под капотом
Олжас Сулеймен
позже попробую одну вешь
. .
Всем привет, кто нибудь делал авторизацию через вк?
. .
У меня вроде бы есть исходный код facebook, но мне нужен vk
Сергей Переходов
у них есть дока
. .
А могу ли делать по инструкции php
Сергей Переходов
есть под андроид
. .
А она под Ios подойдет?
Сергей Переходов
Поищи в ВК у них должна быть sdk под всё
. .
Спасибо большое, нашел
Archakov ??
Никто не сталкивался с проблемой такой, когда юзаешь библиотеку audioplayer / audioplayers ?
Archakov ??
[
"путь к файлу указан верный. когда запускаю ",
{
"type": "code",
"text": "audioPlayer.play(URL);"
},
" через сек. 20 выдает это"
]
Archakov ??
но аудио так и не воспроизводится в эмуляторе
Archakov ??
mp3 воспроизводится, ogg нет. оказалось дело в этом
Vladimir Bischel
[
"Такой вариант не пробовали?\n",
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/33072"
},
""
]
Evgeny Cherkasov
[
"Если ли в Дарте какой то синтаксис чтобы не выполнять цикл по итератору если он null?\nт.е. чтобы не оборачивать\n",
{
"type": "pre",
"text": "for (Object item in items) {}",
"language": ""
},
"в \n",
{
"type": "pre",
"text": "if (items != null) {\n ...\n}",
"language": ""
},
""
]
???????
[
{
"type": "code",
"text": "items?.forEach((item) => print(item));"
}
]
Danya??
Это разве не experimental?
Karen
ты с тайпскриптом не путаешь?
Karen
да и там уже релизнулось
???????
Это не null safety
???????
Иди смотри dart lang tour
Danya??
DateTime не может быть null?
Evgeny Cherkasov
OK, спасибо
???????
Не поверишь, но вообще все может быть null)
Danya??
Что вводит null safety? То, что все типы non-nullable по дефолту как в котлине?
???????
[
{
"type": "code",
"text": "DateTime dt;\nif (dt == null) print('pizdos');"
}
]
???????
Аналайзер будет говнокод присекать
???????
Это, вроде, не в принудительном порядке будет
Danya??
Тупо хинты для статик анализатора?
???????
Тип того. Не даст тебе собрать, если гдет пролюбишь проверку на null
Danya??
А, то есть всё-таки ошибка компиляции?
???????
И нужно будет указывать принудительно элементы могущий принимать null
???????
Сейчас, по крайней мере, это работает как указание этой фичи в анализаторе
Danya??
Но ссылочные типы все равно останутся nullable?
???????
Ты сам должен будешь указать
???????
Причем везде, вплоть до дженериков
Danya??
[
"Короче\n",
{
"type": "code",
"text": "DateTime dt = null;"
},
" не будет работать?"
]
???????
Предвижу море слезок любителей динамической типизации и var'ов
???????
Тебе не нужно явно указывать null, можешь просто не объявлять.
???????
Но да, по идее, если объявляешь поле DateTime dt у класса, то должен не забыть в конструкторе его объявить, также как с final сейчас
Danya??
То есть оно все равно сможет принимать null значение?
???????
Как? Тебе дарт не даст собрать
Danya??
Но потом нельзя будет так?
???????
Потом надо будет писать или чото тип того
???????
В тч и указывать дженерики, если есть, тк на них это тоже распространяется.
???????
них@я нет - это тоже величина (точнее её отсутсвие)
???????
зло - кривые руки
???????
А если у тебя сейчас кейс где нужно не допустить null - пользуй геттеры и сеттеры
Danya??
nullable типы по дефолту — зло
undecided young boy
Ладно пацаны
neikist
nullable таки зло там где не надо (а надо оно мало где)
???????
assert'ам научить?)
Danya??
Ехал Boolean через true, false и null..
neikist
Которые только в рантайме словят. Спасибо, не нужно.
Gabben
А ассерты не сливаются при оптимизации?
Danya??
assert'ы — это костыль Ошибки в рантайме ловить не оч кайф
Danya??
Тем мне и нравится С++, что он максимально вытаскивает обработку ошибок в компайл-тайм
???????
Так в рантайме у тебя и не должно быть ошибок)
neikist
После java где в лучшем случае аннотациями помечается где не должно быть null - котлин с его null safety просто сказка. Это одна из основных фич которых мне в дарте не хватало
???????
Вообще никаких, если вдруг не знал)
???????
Ну уже сча можешь пользовать)
???????
Не знаю как во флатере, но в дарте точно уже есть
neikist
Правильно, давайте вместо того чтобы максимально жизнь программисту упрощать и исключать ошибки на этапе компиляции - возложим поиск ошибок на когнитивные способности самого программиста вместо машины
undecided young boy
Ладно пацаны, Я тут побывал тут очень долго, смотрю вы очень умные и много чего знаете, задаете вопросы суть которых я не мог понять. Так что бывайте, создавайте еще больше крутых сайтов. Когда нормально начну во флаттере программировать, обязательно приду, ведь уверен вы мне поможете... спасибо за те славные деньки
???????
Так никто и не говорит, что фича плохая
???????
Я к тому, что и до этого ты мог небольшим бойлерплейтом обойтись
???????
геттеры-сеттеры и небольшая функция проверка на null дающая throw exception
Danya??
Мы тут мобильные приложения создаём, пока что Сайты в скором времени!
???????
Заодно эта фича сделает больно любителям var'ов, а я автоматически только за такие штуки)
undecided young boy
Да перепутал, но сайты тоже для вас не проблема
neikist
Вот только это рантайм. И только для полей. Смешно же
???????
Ну а чего тебе еще надо?
???????
Тебе, по сути и надо защитить публичный интерфейс
neikist
Локальные переменные и все в компайл тайм
Danya??
Что не так с var? То, что переприсвоить переменную можно?
Danya??
Или тебе type deduction не нравится?
???????
Если ты опытный разработчик (а это не так) - ничего страшного
???????
А если это в публичном api, то страшно даже если ты опытный разраб.
Danya??
Да ты ответь что именно не так
???????
Ну вот подумай, что может быть не так с var в публичном интерфейсе.
???????
Прикинь, подумай.
Danya??
А его разве можно объявить как поле в классе?)
neikist
Абсолютно ничего.
Maxim
мне кажется или dart это немного измененый c#?
???????
Смесь сисярпы, жабы и жабаскрипта.
neikist
Скорее дикая смесь жабы, c#, js, kotlin
Danya??
И непонятно чего ещё
Maxim
а тут есть методы расширения, linq и таски с async await?
neikist
Изоляты уж больно мне модель акторов напоминают например, вполне возможно стащили из какого нить языка в котором оно из коробки тоже
???????
Понял почему это может быть очень херово в public api?
Danya??
Асинхронность немного другая, но тоже интересная Extension methods есть Про аналог linq мне тоже интересно
???????
Если это будет в приватной бизнес логике - это вообще никого волновать не будет (кроме тех, кому поддерживать и кого ты попросишь помочь)
Danya??
Ну тип ты просто можешь заменить поле и всё, а класс будет не в курсах вообще Это говнокод
???????
Я вот людям с var'ами - не помогаю, особенно если вижу, что ошибка связана с типизацией
???????
А тут каждая вторая ошибка с var'ами - с типизацией)
neikist
С чего бы не в курсах? На вар вполне себе сеттер навешивается
|