Программирование : Dart & Flutter по-русски
Max
Когда говорят о хранении, легко предположить, что речь идёт в том числе о хранении между сессиями
Oleg
заходи с той стороны где наибольшее коммьюнити. то есть React
Oleg
Ребят, у флуттера есть какие-либо ограничения в сравнении с нативной разработкой под ios и android?
Max
Когда тебе нужна работа с железом, с которым никто ещё не работал во Flutter, нужно писать плагин на Java/Kotlin и Objective C/Swift)
Max
Ну, и если твоё приложение не укладывается в концепцию "экраны, состоящие из иерархическтх виджетов" (например, полностью 3d-игрушка), флаттер не поможет тебе ничем. Но такие приложения - скорее редкость)
Max
В общем, Flutter - отличный конструктор типовых интерфейсов. Это то, что он делает хорошо, и то, для чего его есть смысл использовать. Если существенная часть твоей программы - типовой интерфейс, флаттер - отличный выбор.
Co. In
[
"Народ. Подскажите с роутингом. Прыгаю по страницам через ",
{
"type": "pre",
"text": "Navigator.pushNamed",
"language": ""
},
" и нужно сбросить роутинг на этапе, чтоб вернуться назад уже нельзя было. Делаю это так\n",
{
"type": "pre",
"text": "Navigator.pushNamedAndRemoveUntil(context, '/results', (_) => false);",
"language": ""
},
"\nПри нажатии на системный ?? в андроиде, приложение сворачивает, а после восстановления меня кидает на home.\n\nКакие есть пути решения? Проверять в home где я сейчас и перекидывать туда обратно. Или что-то нужно настроить чтоб такого не возникало?"
]
Max
Опиши ожидаемое прведение? Кнопка бэк в Андроиде возвращает тебя по экранам приложения, а со стартового экрана возвращает на тот, с которого было открыто приложение. Это рекомендованное поведение и пользователь ожидает именно его.
Max
То поведение, которое ты описал, как нежелательное, полностью соответствует этой схеме
Co. In
Я ожидал что приложение останется на том же экране какой был до сворачивания. Это только я так ожидаю?)
Max
А кто ему сообщит, на каком экране оно было?
Max
Приложение может записать эту информацию в какой-нибудь Persistent Storage и поднять оттуда при запуске. Но эту логику придется написать руками. Магии не бывает.
Co. In
Я просто уточню. Последний бэк перезапускает приложение? Как последняя вкладка в хроме?) Которую если закрыть то закроется всё?
Max
Последний бэк закрывает приложение. Это отлично работает в сценарии "запустил не то".
Max
Если у тебя нет записей в истории навигации - бэк закрывает приложение
Co. In
Охрана отмена! Значит нужно просто привыкнуть к этому. Раньше не обращал внимание значит на эту особенность
Ysim Tokido
[
"Как в sqlLite для flutter удалить все записи из таблицы ? Пробовал как здесь ",
{
"type": "link",
"text": "https://medium.com/flutter-community/using-sqlite-in-flutter-187c1a82e8b"
},
" ,а оно там пишет ‘’’DatabaseException(near \"*\": syntax error (code 1 SQLITE_ERROR): , while compiling: Delete * from Client) sql 'Delete * from Client' args [] ‘’’"
]
Andrey Gaysin
Для оператора delete звёздочки не надо
Ysim Tokido
хм странно но работает,сколько помню всегда звёздочку надо было писать и в примере с звездочкой... ??
Danya??
Да никогда не надо было писать
Danya??
[
"Обычно пишут\n",
{
"type": "pre",
"text": "DELETE FROM table WHERE <условие>",
"language": ""
},
""
]
Ysim Tokido
пример не верный ? ( может и flutter не надо но mysql я писал )
hans linger
указывать поля в DELETE смысла никакого )
hans linger
потому звездочка и не нужна
Danya??
Ну я тоже писал на MySQL, там это не надо
Danya??
Это классический SQL
Andrey Gaysin
Ничего удивительного, люди могу ошибаться )
Ysim Tokido
да почитал комменты к посту ,там тоже пишут что asterisks не работает
Oleg Skiryuk
кто-нибудь уже пробовал новый пакет states_rebuilder для управления состоянием? выглядит вкусно
Ivan Pavlov
[
"Это про это? ",
{
"type": "link",
"text": "https://youtu.be/iIxWMeFnIKA"
},
""
]
Oleg Skiryuk
ага, про это
Ivan Pavlov
Внутри него Stream and/or inheritedWidget?)
Maxim
Все стейт менеджменты на одно лицо. Разница минимальная
Ivan Pavlov
Как я понял, разница только в использовании Stream, или навешивании кода над InheritedWidget, или смесь того и другого.
Oleg Skiryuk
похоже что инжекция реализована с помощью inheritedWidget
Oleg Skiryuk
да но, здесь меньше шаблонного кода. Интересная фича ленивая подгрузка
Oleg Skiryuk
т.е у тебя при старте приложения не сразу создается состояние всех страниц, а только то что открыто у пользователя
Ivan Pavlov
А при использовании обычного InheritedWidget воздаются сразу все состояния?
Mitai
видел кто книги по angulardart?))
Danya??
Оно разве не мертво?
Mitai
нет, версия 6 скоро будет, почему он должен быть мертв?
Александр Васильев
есть иконку эту посмотрите + их видео уроки на vimeo
Александр Васильев
у них фри тариф для флатера вроде б, только скетч платный
Александр Васильев
фишка в том что это больше для адаптации дизайна нарисованного в скетче
Александр Васильев
рисовать все равно лучше в скетче и там есть от материала плагин для кастомизации темы
Александр Васильев
material theme builder
Миша
Программа только для мак?
Ivan Pavlov
Кто подскажет, как можно узнать текущую "стопку экранов"?
Sergey White
Всем привет. Умею в go, php, js, react, reactnative(пара опубликованных приложух) и sql и прочие linux Возможно задам баян-бабаян, но уже устал читать(весь день). Может есть ответы на вопросы. 1) Используется ли sqllite во флатере для stateManagent, например как watermelonDB в react native? 2) Делал ли кто-то приложение с несколькими языками (google подсказывает, что можно но как-то все муторно) 3) Есть ли грабли с роутингом (как в RN) ? 4) push уведомления 5) graphql
Sergey White
Есть ли готовый boiler plate для старта с роутингом, менеджментом и т.п
Dmitry Vasilev
[
"про роутинг, менеджмент и языки можно тут посмотреть\n",
{
"type": "link",
"text": "https://github.com/cingulo/flutter-sample"
},
"\n\nребята топ-1 приложение 2019 года по бразилии в Google Play напилили на flutter и сделали сэмпл"
]
Олександр Пл
Добрый день. Есть вопрос по месту хранения настроек аппа или к примеру небольшие данные(к примеру возраст), а также файлов(не обязательно image). Прочитал что есть различные места, также разные инструменты. Хотелось бы узнать best practices ну или моменты/нюансы которых следует придерживаться. Заранее спасибо за ответ??
Danya??
[
"Привет. Кто-нибудь реализовывал авторизацию в ВК в Flutter приложении? Как это сделать?\n\nКратко опишу процесс как это должно происходить:\n\n1. Мы открываем юзеру страничку ",
{
"type": "code",
"text": "https://oauth.vk.com/authorize"
},
" в параметрах передаются различные данные и ",
{
"type": "code",
"text": "redirect_uri"
},
" — адрес, куда будет редирект после авторизации.\n\n2. После успешной авторизации Вк нас перенаправляет на указанный нами ",
{
"type": "code",
"text": "redirect_uri"
},
" и в параметрах передаёт ",
{
"type": "code",
"text": "access_token"
},
" и ",
{
"type": "code",
"text": "user_id"
},
" — собственно эти данные нам и нужны для дальнейшей работы с VkApi"
]
Danya??
[
"Так вот, я думаю тут подойдёт ",
{
"type": "code",
"text": "webview_flutter"
},
""
]
Danya??
[
"Только как понять, что авторизация была успешна? ",
{
"type": "link",
"text": "https://pub.dev/documentation/webview_flutter/latest/webview_flutter/WebView/onPageStarted.html"
},
"?"
]
Danya??
[
"Я пока думаю, что надо зарегистрировать этот callback ^ и если она начинается с ",
{
"type": "code",
"text": "redirect_uri"
},
", то проверяем получили ошибку или нормально авторизовались и тогда Навигатором переходим в приложение?"
]
Aleksandr Mishchenko
[
"Можешь сделать через platform channel на базе ",
{
"type": "link",
"text": "https://github.com/VKCOM/vk-ios-sdk"
},
""
]
Danya??
Это нормальное решение или есть получше?
Danya??
Вот тоже думал об этом, на самом деле
Aleksandr Mishchenko
[
{
"type": "link",
"text": "https://github.com/kyuqw/flutter_vk_sdk?files=1"
},
" можно взять как пример, но он не совместим со 2 Дартом, так что аккуратнее"
]
Aleksandr Mishchenko
А, нет, вроде даже совместим
Danya??
Так, ну через SDK вроде авторизоваться можно только если приложение вк установлено на телефоне, а если нет?
Danya??
И моё изначальное решение сильно хуже?
admin
Кто шарит, есть такое в vscode Asset Image?
Max
Это уже почти редактор изображений
Daniil S
[
"Вот это я понимаю туториал ",
{
"type": "link",
"text": "https://fireship.io/lessons/flutter-radial-menu-staggered-animations/"
},
""
]
Danya??
Есть ли в IDEA функциональность, схожая с FixImports плагином к VS Code?
Danya??
Optimize Imports не делает так
Yaroslav
Ctrl/Cmd + Enter и выбирать варианты фикса, а так чтобы все за раз пофиксить хз
Danya??
Единственное что предлагает
Yaroslav
а что не так вообще?
Yaroslav
из этого скриншота не особо понятно, честно говоря
Danya??
Ну, Fix Imports в VS Code переделывает импорты на relative Здесь нет упоминания этого даже
Yaroslav
подозреваю что только через Replace All
Stanislav Sagan
[
"релизнули hive c ",
{
"type": "code",
"text": "typeId"
},
""
]
Stanislav Sagan
[
"Подскажите как объявлять этот ",
{
"type": "code",
"text": "typeId"
},
" в ",
{
"type": "mention",
"text": "@HiveType"
},
"? Я не очень понимаю("
]
Stanislav Sagan
[
"Ааааааааа.......\n",
{
"type": "code",
"text": "@HiveType(typeId: 1)\n\n"
},
{
"type": "link",
"text": "https://docs.hivedb.dev/#/tutorials/contacts?id=models-and-enums"
},
""
]
Stanislav Sagan
Видимо просто не всю документацию обновили. Всем спасибо!
Вадим
Ребята, если я использую StreamBuilder, он state свой сам держит? Вопрос в том, надо ли его заворачивать в Stateless widget или в Stateful?
Max
Нет у него никакого state
Вадим
понял, т.е. в Stateful заворачивать?
Вадим
Я один и тот же виджет использую в двух местах
Вадим
чтобы код один и тот же дважды не писать, хочу вынести его отдельным виджетом и использовать, где надо
Max
Если ты хочешь перестраивать виджет по данным стрима - тебе нужен StreamBuilder. Если ты хочешь виджет со сложным стейтом, который в том числе слушает стрим - напиши Stateful Widget, стейт которого слушает стрим.
Max
StreamBuilder - это когда стейт прилетает снаружи целиком.
Alexey
где вы храните информацию, например, о юзере? Чтобы каждый экран мог иметь к ней доступ. Я начал делать это с помощью behavioursubject-streamprovider чтобы отрабатывать изменения. При этом начал использовать bloc и теперь не уверен, как в блоке нормально работать с b_subject. Может есть где-то примеры сложных приложений?
Stanislav Sagan
[
"Вот (тут пример):\n\n",
{
"type": "link",
"text": "https://t.me/rudart/137918"
},
""
]
Stanislav Sagan
Я храню сразу в hive
Stanislav Sagan
И на диске и как в стейт менеджере
Dart Flutter
Пацаны у кого есть русскоязычная книга 16 года или свежее Дарт в действии?
Danya??
Объясните factory constructor отличается от named constructor только тем, что он имеет контроль над возвращаемым значением?
Maksim Schennikov
По большему счету да. И не обязательно named. Через factory удобно делать сингтоны, которые умеют в return. Для больего понимания добавлю, что весь этот венигрет ещё из первого дарта пришёл. Там различий было больше.
Danya??
Так Я правильно понимаю, что factory constructor не отличается от static функции, написанной с той же целью?
Danya??
Если отличается, то чем?
Олжас Сулеймен
в рефлексии они хронятся отдельно, функции и конструкторы
Олжас Сулеймен
(уточню по позже)
Олжас Сулеймен
у вас не получится использовать factory как функцию
Danya??
Ну я имел в виду, что это частный случай статик функции
Maksim Schennikov
Ну этот вопрос странный. По сути, зачем нам классы с конструкторами с возвратом себя, если мы для этих целей можем написать статик функции, которые будут возвращать экземпляры классов, в которых нет конструкторов с возвратом?)
Олжас Сулеймен
позже гляну спеки, и по глубже в самом дарте
Danya??
Ничего не понял, но очень интересно
Олжас Сулеймен
есть такое
Олжас Сулеймен
иногда так охота кинуть конструктор в мапу, а не писать люмбду, а статик как то не тру когда есть фактору
Danya??
Просто для меня factory constructor сейчас — это статик функция порождающая Не могу увидеть разницу
Danya??
Ну видимо разница кроме рефлексии ещё в том, что на конструкторы нельзя ссылаться как на функции
Danya??
Дарт, конечно, интересный язык...
Maksim Schennikov
Никто же не говорит, что функционально оно не взаимозаменяемо.
Danya??
Просто сейчас кажется что это фича ради фичи
Maksim Schennikov
Это наследственность. И не хочется даже разбираться что к чему в первом дарте, если честно.
Maksim Schennikov
Знаю только, что там фактори был незаменим...
Danya??
Дарт1 сильно от Дарт2 отличается?
Maksim Schennikov
Строгой типизацией как минимум. Первый был сделан, чтобы заменить js
Maksim Schennikov
Но я в глаза первый не видел, если что.)
Danya??
Строгой или статической? Или статической строгой?
Maksim Schennikov
Динамической. Так сойдёт?
Олжас Сулеймен
не точно, более dynamic
Олжас Сулеймен
на хабре есть превод от врайка по поводу выхода 2
Олжас Сулеймен
[
{
"type": "link",
"text": "dart.dev/dart-2"
}
]
Tamerlan Godzhiev
Ребята всем привет! Подскажите пожалуйста. Есть обычная конструкция функции someFucnction ( value ) { do something } А может быть просто вот такая конструкция ? someFunction(value)
Олжас Сулеймен
typedef, или virtual method c ; в конце у abstract class
Tamerlan Godzhiev
Так значит может быть такая конструкция?
Tamerlan Godzhiev
Которая просто принимает значение
Олжас Сулеймен
а где она нужна?
Maksim Schennikov
добрался до гугла) 1) There is not much difference between a static method and a factory constructor. For a factory constructor the return type is fixed to the type of the class while for a static method you can provide your own return type. A factory constructor can be invoked with new, but that became mostly irrelevant with optional new in Dart 2. There are other features like redirects rather rarely used that are supported for (factory) constructors but not for static methods. It is probably still good practice to use a factory constructor to create instances of classes instead of static methods to make the purpose of object creation more obvious. This is the reason a factory constructor is used in the example you posted and perhaps because the code was originally written in Dart 1 where it allowed to create a logger instance with new like with any other class.
Maksim Schennikov
тут про фактори и не фактори. Но, может, это как-то поможет)
Олжас Сулеймен
редиректами мало кто пользуется да и фича редко нужна
Maksim Schennikov
я фактори использовал только для сингтонов, по-моему очень мило... и выглядит как в Java)
Maksim Schennikov
class SingletonOne { SingletonOne._privateConstructor(); static final SingletonOne _instance = SingletonOne._privateConstructor(); factory SingletonOne(){ return _instance; } }
Daniil S
Фактори конструктор подаразумевает что то, что он возвращает класс который реализует класс с конструктором как интерфейс или наследует его. Это нужно когда вы начинаете работать с абстракциями. Следуете паттерну фабричный метод к примеру или делаете фабрику. Статический метод это очень утилитарная штука, которая хорошо для доступа к какому-либо ресурсу. Особо не поворотливая, так как переопределить ее нельзя и статика не особо про ооп и оод. Вообщем если вы хотите соблюдать на данный момент самые известные и принятые правила в программировании, следует минимизировать использование статики и обратиться к именованным конструкторам или factory. Зависит от задачи
Daniil S
Если коротко, то из factory конструктора что попало не вернёшь и это правильное ограничение
Ivan Pavlov
Что такое "одд"?) Поясните новичку в программировании.
Daniil S
Обьектно-ориентированный дизайн
Ivan Pavlov
От оно что ещё есть))
Daniil S
Это о том же, только более широко
Max
Не трогай это. Она про первый Dart
Daniil S
Может человек захотел познакомиться с историей =)
Nick Galko
[
{
"type": "mention",
"text": "@PlugFox"
},
" , что-то вы меня ребят огорчаете.."
]
???????
Сайт не мы делали)
???????
Мы только с этого года занимаемся и вебом)
Nick Galko
Слушай, пока ты тут. Расскажи, что у вас в качестве crashlytics используется?
???????
А сайту уже черт знает сколько)
Nick Galko
ты про вашу сертификацию ничего не знаешь? (от гугла)
???????
Не подскажу, я под внутреннюю разработку, флатер не используется
Maksim Schennikov
А разве не только себя?
Daniil S
Почему только себя должен? Если класс унаследовал родителя можно и его вернуть
Daniil S
Или интерфейс реализовал
Andrei Abramenko
[
"Попалась статья (англ.) про сравнение производительности Android Native, iOS Native, Flutter, Xamarin Forms, React Native ",
{
"type": "link",
"text": "https://blog.codemagic.io/flutter-vs-ios-android-reactnative-xamarin/"
},
""
]
admin
мужики, привет всем и с наступившим. Вопрос. Как мне найти виджет по его типу в рантайме? Виджет - стэйтфул.
Maksim Schennikov
Точно) Я как-то не задумывался.)
admin
ну или просто как вообще найти виджет из любого место аппа? желательно без синглтонов, гетитов и прочего
Урусай
А что ты получить хочешь?
admin
скажи из другого не связаного виджета дернуть нужный.
admin
В общем вроде как через глобалкей стэйта пытаюсь ща. по идее должно сработать
Урусай
Flutter как бы исповедует декларативность. Ты всё равно ничего не сможешь сделать с виджетом, если получишь его объект
Урусай
Глобальный State - это не хранилище виджетов. Глобальный State - это состояние приложения, на основе которого твоя build функция строит дерево виджетов
Урусай
Погугли про паттерн Model-View-Update. Тут используется похожий принцип
admin
Я примерно вот так final orderDetailsViewStateKey = new GlobalKey ();
admin
та не.. про это знаю всё. Для меня эт ща обернется перепиской всего аппа, который даже не мой код... посему костылим
Урусай
Я думаю для этого ты можешь использовать Provider пакет
Daniil Kolyasnikov
А в чём задача ?
Daniil Kolyasnikov
Просто виджет как бы все еще остается классом. Если нужно использовать его методы в отвязке от виджета, то лучше просто закопировать их
admin
есть роут. внутри него парочка разных стейтфулов. При определенных телодвижениях надо прочекать состояние одного из них и закрыть роут через pop()
Daniil Kolyasnikov
А что за телодвижения ?
admin
вшивать адекватность времени нет, заказчики негодуют из-за сорванных сроков.
admin
ответ сервака, пушнотификация
Daniil Kolyasnikov
Правильно понимаю, что у обоих statefull есть какой -то общий родитель ?
admin
Может да, может нет. Сейчас эт роли не играет)
Daniil Kolyasnikov
Играет. 2 варианта: 1)Пробросить от общего родителя ValueNotifier и внутри этих виджетов слушать изменения. 2) глобальный EventBus и слушать события
Vladyslav Blagoy
Всем привет, кто собирал приложение для linux, при этом не разворачивая flutter на девайсе. Чтобы можно было получить конечный файл приложения, как сейчас для macOS? ‘’’ flutter build macOS ’’’
Danya??
А где можно посмотреть горячие клавиши для расширений VS Code для flutter и dart?
Danya??
flutter приложение для linux? там разве только не debug режим доступен?
central hardware
а что вообще с десктопом? win + linux?
Danya??
На сколько я знаю, более-менее поддерживается пока только MacOS Под linux только debug билд есть
Danya??
По-крайней мере был
Vladyslav Blagoy
Ага, окей, спасибо
Олжас Сулеймен
вроде на го уже собирают в аот режиме прод версию (еще не пробовал, судя по их ишуям на основном и пулам в их репе)
Олжас Сулеймен
[
{
"type": "link",
"text": "https://github.com/go-flutter-desktop/go-flutter/issues/259"
}
]
Олжас Сулеймен
переходят на GL 3.3, а карта 11 года с 3.1 ((
Олжас Сулеймен
[
"уже и на расте\n",
{
"type": "link",
"text": "https://github.com/flutter-rs/flutter-rs"
},
""
]
Yerassyl Maikhanov
4х )))
Урусай
Ребята. А как провайдить объект в контекст? Мне нужно изменить стиль ListTile. Вижу что внутри он дёргает тему из контекста (ListTileTheme.of(context))
Stanislav Sagan
Был бы флаттер изначально на расте - было бы совсем круто
Max
Если бы у бабушки был член...
Stanislav Sagan
Та то понятно что это невозможно. Гугл бы максимум на го своем бы мог сделать. И никогда не на раст
Олжас Сулеймен
а в го и расте на лету можно выполнять код?
Олжас Сулеймен
тут обертки для флаттера на чем угодно что дергает си можно писать
Stanislav Sagan
Нельзя.. Но мне кажется что при большом желании могли бы и сделать (но это не точно)
|