Программирование : Dart & Flutter по-русски
???????
Там поле есть, показывающее текущую версию и действия при обновлении
amnesia header
В коде в котором я работаю прописал final int DB_VERSION = 1; // версия БД Возможно, требуется вставка OnUpgrade. Я пытаюсь сделать на основе примера, но все что попадается - это как обновить таблицу при помощи OnCreate. У меня OnCreate нет, Прописал var db = await openDatabase( path, version: 1, readOnly: true); return db; } Но дальше просто недогоняю из-за отсутствия инфы
Evgeniy Nikiforov
вот меняешь если 1 на 2, то в нижнем квадрате любой скрипт пишешь
???????
Ты: > Подскажите как обновлять базу данных sqlite? Также ты: > Возможно, требуется вставка OnUpgrade. Я пытаюсь сделать на основе примера, но все что попадается - это как обновить таблицу при помощи OnCreate.
???????
А в чем сакральный смысл удаления тут индекса для любого обновления?
Bretbas
[
"Народ, тут сказано:\n",
{
"type": "link",
"text": "https://pub.dev/packages/flutter_vk_login"
},
"\n\nчто нужно создать класс ",
{
"type": "code",
"text": "Application : FlutterApplication"
},
", и переопределить у него метод для инициализации вконтакте sdk при запуске.\nТам сказано, что этот класс необходимо положить в папку ",
{
"type": "code",
"text": "android"
},
":\n",
{
"type": "code",
"text": "Next, in android section of your flutter app create class Application"
},
"\n\nНо какое расширение должно быть у этого класса? .dart ? .java?"
]
amnesia header
Попробовал немного другим путем. Правильно ли я думаю в данном направлении? Если да, то что писать в "db.execute"? Future initDB() async { var databasesPath = await getDatabasesPath(); var path = join(databasesPath, "database.sqlite"); var exists = await databaseExists(path);
if (!exists) { print("Creating new copy from asset"); try { await Directory(dirname(path)).create(recursive: true); } catch (_) {}
ByteData data = await rootBundle.load(join("assets", "database.sqlite")); var db = await openDatabase(path, version: 1, onUpgrade: _onUpgrade); List bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
await File(path).writeAsBytes(bytes, flush: true); } else { print("Opening existing database"); } var db = await openDatabase(path, readOnly: true); return db; } // UPGRADE DATABASE TABLES void _onUpgrade(Database db, int oldVersion, int newVersion) { if (oldVersion < newVersion) { db.execute("здесь что то должнл быть;"); } } Future get database async { if (_database != null) return _database; _database = await initDB(); return _database; }
Ali Qasimzade
Всем привет. Я начинаю изучать dart у кого то может есть советы? На каком редакторе лучше всего писать?
???????
Для дарта лучий вариант - VS Code
???????
На флатере уже можешь рассмотреть Android Studio
Ali Qasimzade
Для ui разработки какой фреймворк используют?
???????
Тебе мобилки или веб?
???????
Большинство тут под мобилки и на флатере
Ali Qasimzade
Мобилка, для веб я java использую
???????
Зачем ему IDEA тем более с такими вопросами?
???????
Чего ты под веб используешь?)
Ali Qasimzade
Spring boot
???????
Ну на дарте тоже можешь бэк
Ali Qasimzade
Пишу на java просто ради разнообразия хочу и на мобиле писать))
Ali Qasimzade
Дарт как я понимаю и для иос можно да?
???????
Дарт - язык програмирования.
???????
Флатер да, кроспплатформенен
Fearless Cry
это новый вид лапши
???????
Угомонись или Я тебе сча трансформер напишу
Ali Qasimzade
Для ui какой редактор лучше? Я привык к jetbrains
Fearless Cry
андроид студио
???????
ведроид студию бери под флатер
???????
с нее проще начать
Fearless Cry
или идеа + плагины
Ali Qasimzade
Это по мне)) какой плагин?
Ali Qasimzade
Точняк ведроид))
Fearless Cry
flutter + dart
Fearless Cry
чего как маленький - открой доку
Aleksandr
В scaffold с полями resize или extend попробуй поиграться.
Dart Flutter
ок, попробую
Bretbas
[
"кто юзал ",
{
"type": "link",
"text": "https://pub.dev/packages/flutter_vk_login"
},
""
]
Aleksandr
Было такое, исправил.
Bretbas
не могу настроить, помогите
Bretbas
[
"Народ, тут сказано:\n",
{
"type": "link",
"text": "https://pub.dev/packages/flutter_vk_login"
},
"\n\nчто нужно создать класс ",
{
"type": "code",
"text": "Application : FlutterApplication"
},
", и переопределить у него метод для инициализации вконтакте sdk при запуске.\nТам сказано, что этот класс необходимо положить в папку ",
{
"type": "code",
"text": "android"
},
":\n",
{
"type": "code",
"text": "Next, in android section of your flutter app create class Application\n\n"
},
"Но какое расширение должно быть у этого класса? .dart ? .java?"
]
Пашка
не помню какой пакет юзал но авторизацию сделать получилось
Bretbas
ну а можно подробнее? ??
Пашка
[
{
"type": "link",
"text": "https://github.com/Stmol/flutter_vk_sdk"
}
]
Angry TaigaFox
nested navigation называется, в гуглe предлагают юзать Navigator c onRouteGenerator
Ярослав Макаров
А есть какая-то принципиальная разница между idea и студией для флаттера?
Happy
Всем привет. Объясните тупому, что такое shared preferences и зачем они?
Alexandr Yudin
Локальное хранилище для простых типов данных которое хранит их в привязке к приложению, живет даже после апдейта приложения, но если удалишь приложуху грохнешь данные в нем
Happy
Что то типа временного кэша?
Alexandr Yudin
Вроде того, но скорее хранилище флагов
Alexandr Yudin
К примеру для определения первого захода в приложение, на какой то экран или что-то наподобие
Happy
Ммм, погуглить нужно и переварить. А так, спасибо. Вина за мой счет этому господину)
Alexandr Yudin
Если хочешь кеш в глобальном понимании лучше смотреть в сторону nosql
Alexandr Yudin
Хотя можно и в shared preferences запихнуть сложный объект в виде json string
Happy
Да я подетально разбираю экзампл, и наткнулся на непонятное. Офф курс смотреть лень, документацию тоже) Вот и мучаюсь методом научного тыка, опираясь на прошлый опыт
Alexandr Yudin
А прошлый опыт в чем?)
Happy
Говнокодил ещё на паскале))
Alexandr Yudin
Доки по флаттеру довольно хорошо расписаны
Alexandr Yudin
Если не хватит то как минимум есть ещё доки iOS, Android, Xamarin :)
Happy
Ну вот и думаю опыт мобильной разработки облегчает понимание флаттера
Alexandr Yudin
Xamarin скорее на всякий случай так как там тоже наиболее частые вопросы мобильной разработки в доках расписаны
Alexandr Yudin
У меня собственно опыта во флаттере нет, начал изучать его недели 3 назад , а вот Xamarin 4 года уже как
Alexandr Yudin
Да кстати если есть у кого работёнка проверить свои силы пишите, попробовать себя хочу во флаттере на коммерческой основе
Happy
Если действующий разраб, то проще. Я вообще с нуля наступил в это г)))
Alexandr Yudin
Ну я б так не выражался
Happy
Не соответствует действительности)
Alexandr Yudin
Флаттер крутая вещь и суппорт замечательный в плане сообщества так что г скорее все то что не имеет такой поддержки и не так стремительно развивается и влияет на будущее индустрии
Alexandr Yudin
Советую на ютубе посмотреть ролики flutter developer stories
Alexandr Yudin
Это ролики снятые компаниями которые решили в продакшене у себя юзать флаттер и что они получили от этого
Alexandr Yudin
А по большому счету индусы или нет пофиг главное годный контент
Happy
Русскоязычного бы побольше
Alexandr Yudin
О ну это конечно можно и самому организовать)
Alexandr Yudin
А вообще английский в девелопменте нужен как воздух так что дерзай
Happy
Девелоперский английский, это отдельный диалект какойто)
Alexandr Yudin
Как вариант юзай автосабы ютуба если доступны
Alexandr Yudin
Не диалект а скорее слэнг , разница только в словарном запасе который нужно расширить дабы все понимать
Happy
Если что то нужно будет уточнить, обращусь к тебе, ок?)
Alexandr Yudin
Ага если буду не занят отвечу
Cmndwn
Добрэ вечер. Кто-нибудь знает - данные в hive лежат в зашифрованном виде? Или чувствительные данные нужно предварительно шифровать?
Angry TaigaFox
[
{
"type": "link",
"text": "https://docs.hivedb.dev/#/advanced/encrypted_box"
}
]
Aleksey
Как можно передавать enum как параметр в функции?
Serge Shkurko
В качестве типа укажи имя перечисления
Aleksey
сработало, спасибо)
Aleksey
Раз уж такое дело, и вы мне ответили.. Может вы еще знаете как сделать геттер асинхронным?))
Aleksey
замечание* использовать стрелку =>
Serge Shkurko
Future get langAsync async { final lang = await getPlatformLang(); return Lang }
....
Future anotherFunc() async { final appLang = await myClass.langAsync; }
Serge Shkurko
От стрелочной функции ничего принципиально не меняется, это возврат без хранения переменных
Serge Shkurko
Future get langAsync =>getPlatformLang();
Serge Shkurko
По своей сути async/await есть лишь синтаксический сахар в качестве обертки для future
Serge Shkurko
если сделать асинхронную функцию при ее выполнении вернётся Future и в нем уже содержимое того что возвращаешь
Serge Shkurko
Это же справедливо и для геттеров
Aleksey
Спасибо, сделал пример в dartpad по вашему примеру и .. он работает) Странно, несколькими часами ранее у меня это не получалось ???? Ладно, спасибо в любом случае)
Filipp Tihonovich
всем привет, мб кто знает в чем проблема, приходит такой json - {"Courses":[],"Id":0,"Name":"Database"}
Sergey
Всем доброго времени суток! Подкиньте идею, возможно ли реализовать патч для приложения, открывающий набор функций. Идея в том чтобы при установке патча в версии приложения с Гугл плей открывалось пара функций. На ум пришло поменять вторым приложением переменную в shared preferences первого
Vladimir
Привет всем, в IDEA проблема с подцветкой при создании Web App. При изменении имени Main на другое она сразу работает, в чем может быть проблема?
Аня
Всем привет. Не могу понять, как сделать, чтобы данные email'a обновлялись сразу, а не после того, как заново открываешь экран с настройками. В TextFormField initialValue - данные поля email из Firestore. Подскажите, в какую сторону копать/гуглить, пожалуйста
Max
И подумать, где ты возмёшь стрим для него.
Max
Тогда новое значение должно каким-то образом попасть в стрим.
Аня
Стрим - снапшот этого документа, но данные емейла обновляются только при новом открытии экрана настроек ._. Неправильный стрим или в жизненный цикл виджета копать? (и в том, и в другом я - нуб, но диплом как-то написать надо..)
Max
Копать нужно в State Management. Это не про виджет уже)
Max
Если экран настроек уже получает стрим с объектом "настройки" - остаётся сделать, чтобы изменение настроек каждый раз порождало событие этого стрима.
чумак
О, глоток помощи. Всем привет, недавно начал свой путь в программирование по причине интереса что - либо созидать. Выбрал вот флаттер, дарт. Потому что прочитал, что это перспективно для мобилок.
NewBalanceM5
добро пожаловать
Angry TaigaFox
[
"Сразу начните с этого ",
{
"type": "link",
"text": "https://t.me/rudart/32919"
},
""
]
Sergii
Привет всем! Есть у дарта сериализатор в Json? А то все что я вижу - полный трешь - какой то перебор ключей вручную и т.д.
Виталий Вивчар
привет, есть, но сам не пробовал
Виталий Вивчар
пока ручками делаю
4??uzhoy .
Столкнулся с такой фигней, рабочий проект флаттер в нативе и домашний проект чистый флаттер, вчера подгрузил в домашний кучу либ в паб, файрбейз к примеру и тд, сейчас на рабочем проекте в древе каталогов висят андроид модули этого фарбейза и прочего и в .idea/modules все пути к ним прописались, естественно проект ругается и не хочет собираться. Не могу понять как так получилось и как этого избежать в след раз, может встречал кто такое поведение ?
Виталий Вивчар
ну чуть дольше, но зато парсишь модельки как тебе надо, особенно актуально когда есть nullable поля и кривой сервер)
Serge Shkurko
[
{
"type": "link",
"text": "https://pub.dev/packages/json_serializable"
}
]
Sergii
А без этого можно?
Виталий Вивчар
это же генеренный код вроде
Serge Shkurko
Это кодогенерация
Serge Shkurko
Можешь настроить Ide так чтобы файлы *.g.dart были скрыты и мешаться не будет
Rinat Kurmashev
в студии как делается?
Serge Shkurko
не подскажу, я на vscode сижу
4??uzhoy .
в чем прикол коммерческого проекта с открытым исходным кодом ? я явно чего то не понимаю
4??uzhoy .
[
{
"type": "bold",
"text": "What’s New in 2020 Volume 1: Flutter Charts Widget"
},
": Серия обзоров ",
{
"type": "bold",
"text": "Flutter"
},
" виджетов за 2020 год: первая часть посвящена диаграммам.\n",
{
"type": "link",
"text": "https://www.syncfusion.com/blogs/post/whats-new-in-2020-volume-1-flutter-charts-widget.aspx"
},
""
]
Nikita Domnitskii
В том что деньги можно делать не только на продукте
Serge Shkurko
Может быть не весь код открыт, или в качестве меры поддержки
NewBalanceM5
скорее всего так и есть, за частую не весь код открыт, а только часть=)
Serge Shkurko
Например Winscp можно скачать с сайта бесплатно, а в маркете win стоит денег
4??uzhoy .
я помню качал его и он после импорта вывел диалог что все это не бесплатно, потом увидел в пабе дисклеймер
Serge Shkurko
Скорее всего донат
Serge Shkurko
Я помню как пытался скачать убунту и не мог понять как это сделать бесплатно
4??uzhoy .
немного не понял потом что вот пакет, вот его методы, ну ладно, решил возьму что - нить попроще да и затер этот пакет из кеша
Serge Shkurko
Пока не узнал что в поле с количеством доната можно 0 ввести)
NewBalanceM5
о, вроде еще был сайт, где книги так можно было забирать.
Evgenii Elchev
вообще куча вариантов монтезации и мотивации. 1) используется в крупной компании. Например многие компании вливают пул реквесты в линукс потому что у себя его используют, и соотвественно если им что то необходимо они просто это реализуют. В итоге компания экономит, ведь не разрабатывать же свой линукс. А юзеры могут пользоваться бесплатным софтом. 2) Поддержка. редхат выпускает несколько дистрибутиов практически идентичных, отичаются только тем что фришный не имеет поддержки и некоторых платных пакетов, которые в целом не делают его работу хуже. nginx опенсорс, но есть у них конторка которая занимается сапортом, она делает деньги 3) Брендирование. Движок хромиум (или как там его) бесплатный, но его поддерживают создатели браузеров, которые на нем лепят браузеры со своими бренд фичами 4) Код клиента бесполезен без севера, код телефграмма открыт, но только клиента 5) Да и есть куча компаний, у которых код ничего не стоит, если ты завтра получишь код фейсбука, это не поможет тебе развернуть свой фейсбук и отжать аудиторию
Павел
class ShadowCard extends StatelessWidget { final Widget child; final VoidCallback onTapDown; final VoidCallback onTapUp; final bool isPressed;
Павел
надо ли тут приватные имена давать?
Павел
в самой либе флаттера не используют . Заглянул в Container и другие
Evgeniy Nikiforov
почему любого ? один раз выполнится и пиши заново другой скрипт с обновлением номера версии. sqlite запоминает oldVersion
???????
Ну я так и сказал
???????
В чем смысл удаления индексов тут
???????
Это не наезд, реально не понимаю, в чем прикол.
Evgeniy Nikiforov
не помню. что-то тестил. это ж просто пример не более, зачем ты ищешь тут смысл
Sergey Salnikov
поправочка по nginx - платная версия nginx plus с балансировкой нагрузки ну и поддержкой разумеется)
Eugene
[
"Всем привет, но могу понять, в какую сторону копать, крашалитика шлёт отчёты при падении приложения полностью, но не шлёт по ",
{
"type": "code",
"text": "Crashlytics.instance.crash();"
},
"\nВ консоле фаербейза понятное дело фильтры убрал."
]
Evgenii Elchev
не знал, что у них есть платная версия)
Sergey Salnikov
я до разработки был devops(когда ещё слова такого не было) поэтому мне nginx(+memcached) близок, даже писал на lua под него сервис binary dropbox для обмена бинарниками с коротким времемем жизни по uuid внутри приложения держал ~9000/sec одновременных безошибочных забросов =)
Evgenii Elchev
я тоже был девопсом, но только занимался почтовым кластером, писал на перле мост в ад)
Sergey Salnikov
опыт devops - хорошая опора для разработчика)
Fearless Cry
раньше я был девопсом… а потом мне прострелили колено
Evgenii Elchev
мне кажется что любой опыт хорош для девелопера) я 6 лер работал на железной дороге, занимался все, поддержкой юзеров, разработкой софта, девопсом, железом) а потом мне рассказали что можно жить по другому)
Sergey Salnikov
обе части - сарказм? или только последняя?)
Fearless Cry
обе, это переделанная цитата из тес
Evgenii Elchev
и кстати сейчас смотришь на девелоперов, которые с универа пошли в ios и больше ничего не видили, и как то не то это)
???????
Чо, пацаны, оффтоп?)
Sergey Salnikov
отругай нас )
Timur Karimov
а куда идти тогда)
Evgenii Elchev
???>? в горе местную студию, там как правило тоже всем заставляют заниматься, только платят копейки, или в крупную компанию с практиками Тшейпа
Eugene
А на завод, или в евросеть. Чтобы потом было с чем сравнивать. И чтобы потом баги флаттера не выводили из равновесия.
Timur Karimov
Спасибо за советы))
Max
Или Mirrors (недоступны в вебе и флаттере), или кодогенерация. Или вручную.
???????
+ плагины IDE для классов из JSON'а
Max
Это тоже кодогенерация, но стредствами IDE, а не билда.
Serge Shkurko
Кто-нибудь смог разобраться как отображать уведомления firebase когда приложение уже запущенно на ios?
Fearless Cry
есть же колбек у делегата
Serge Shkurko
действую по инструкции, после этих изменений калбэки FCM перестали принимать уведомления
Fearless Cry
это ты делегат просто присваиваешь
Serge Shkurko
далее ставлю плагин flutter_local_notifications
Serge Shkurko
чтобы добавить его вызов в каллбэк fcm
Fearless Cry
ну flutter_local_notifications переопределяет делегат на себя
Fearless Cry
у нотификейшн центра только один делегат может быть
Fearless Cry
в итоге там делегат плагина а не твой
Serge Shkurko
[
"но они вроде как скоммуницировались \n",
{
"type": "link",
"text": "https://pub.dev/packages/flutter_local_notifications#130"
},
""
]
Serge Shkurko
и если я все верно понял то fcm пожно отобразить через flutter_local_notifications
Fearless Cry
наверное можно
Fearless Cry
мы этот плагин форкнули в итоге
Fearless Cry
ещё до этих изменений
Bretbas
[
"Народ, как переопределить стандартный класс ",
{
"type": "code",
"text": "FlutterApplication"
},
"?\nВчера пробовал. Создал его в папке ",
{
"type": "code",
"text": "android"
},
", рядом с ",
{
"type": "code",
"text": "AndroidManifest.xml"
},
", в ",
{
"type": "code",
"text": "AndroidManifest.xml"
},
" указал его соответственно"
]
Filipp Tihonovich
всем привет, мб кто знает в чем проблема, приходит такой json - {"Courses":[],"Id":0,"Name":"Database"}
Bretbas
но посыпались ошибки при этом
Serge Shkurko
[
"android/app/src/main/java/ru/publicLib\n\nru/publicLib - будет соответсвовать твоему имени пакета\n\nтам файл ",
{
"type": "link",
"text": "Application.java"
},
" \\ .kt"
]
Serge Shkurko
потом в манифесте переопредели android/app/src/main/AndroidManifest.xml
Павел
подскажите решение, если мне надо бутерброд разместить для шторки и одновременно кнопку назад на одной странице
|