Программирование : Dart & Flutter по-русски
Мirshod
Даёт такой ошибка
MMM Stefan
можете через гетер сетер, проще некуда
Pavel
без самой модели ничего не ясно, скорее всего одна и та же модель или название схемы дважды создано
Pavel
попробуйте удалить файлы миграции и запустить auqeduct db generate
Pavel
у вас не корректно созданы файлы миграции, не по порядку идут, сначала 000000001, а затем сразу 000000003
Мirshod
Я уже добавил на posgresql. Сейчас я добавил columns на db дополнительные и хочу этого добавить.
Мirshod
Сказали поставить Alter Table вместе createTable но даёт ошибку.
Pavel
вы не должны вручную ничего добавлять или менять в самой базе, за вас это делает механизм миграции. Он для этого и предназначен, избавляет от необходимости постоянно при измененнии модели менять таблицы в бд
Pavel
если вы вручную поменяете в базе или добавите - механизм миграции с большой вероятностью сломается
Мirshod
А как нужно сделать чтобы дополнительный columns добавить?
Pavel
[
"вы должны менять в самой модели, а не в файлах миграции, редактирование файла миграции запрещено за исплючением метода seed и downgrade.\n\nВот у вас к примеру есть модель\n\nclass _Article {\n ",
{
"type": "mention",
"text": "@primaryKey"
},
"\n int id;\n String contents;\n ",
{
"type": "mention",
"text": "@Column"
},
"(indexed: true)\n DateTime publishedDate;\n}\n\nВам нужно добавить поле String tag;\n\nдобавляете:\n\nclass _Article {\n ",
{
"type": "mention",
"text": "@primaryKey"
},
"\n int id;\n String contents;\n ",
{
"type": "mention",
"text": "@Column"
},
"(indexed: true)\n DateTime publishedDate;\n String tag;\n}\n\nвсе, запускаете aqueduct db generate, а затем aqueduct db upgrade"
]
Мirshod
Даёт такой ошипка
Pavel
1) Вам нужно удалить базу, и пересоздать ее, так как вы ее меняли вручную. 2) Удалить ВСЕ файлы в папке migrations 3) Меняете модель, запускаете aqueduct db generate, если все ОК, то файл миграции будет создан 4) делаете upgrade как вы делаете это сейчас.
Мirshod
Как удалить базу?
Pavel
DROP DATABASE имя_базы CREATE DATABASE имя_базы Это базовые вещи работы с БД.
Pavel
[
{
"type": "link",
"text": "https://aqueduct.io/docs/tut/getting-started/"
}
]
Pavel
туториал довольно не плохой на англиском языке - многие аспекты покрывает, крайне советую прочитать это руководство.
Мirshod
Другое решение нет, потому что это очень сложно каждый раз когда добавляйте нужно удалить потом создать.
Pavel
каждый раз базу удалять не нужно, это нужно т.к вы влезли в базу руками.
Pavel
систма говорит - таблица уже существует
Мirshod
Есть у меня такой проблем ещё. Когда я создал migration не могу создать второй.
Pavel
там есть проблема в дарте в версиях выше 2.10
Pavel
сейчас напишу что надо стделать
Pavel
[
"Нужно скопировать CLI aqueduct с гита, и использовать ее вместо той, которая сейчас в ",
{
"type": "link",
"text": "pub.dev"
},
".\nВ любой папке вам нужно будет прописать следущее:\n\ngit clone ",
{
"type": "link",
"text": "https://github.com/stablekernel/aqueduct"
},
"\nsed -i 's/0.50.0/0.41.0/g' aqueduct/aqueduct/pubspec.yaml\npub global activate --source path aqueduct/aqueduct\n\nА затем использовать auqeduct db generae как ранее, просто будет использоваться более свежая версия из git репозитория\n\nВообще, если английский знаете решение этих всех вопросов есть в их официальном слаке \n",
{
"type": "link",
"text": "http://slackaqueductsignup.herokuapp.com/"
},
""
]
Мirshod
Нужно только копировать из github?
Pavel
а еще вы используете aqueduct 3.3.0, для новых версий дарта лучше заменить на 4.0.0-b1, там исправлены ряд ошибок, которые возникли в связи с изменениями без обратной совместимости в новых версиях Dart SDK.
Pavel
[
"вы можете вместо git clone ",
{
"type": "link",
"text": "https://github.com/stablekernel/aqueduct"
},
" скачать арихвом пройдя по ссылке и распаковать, а далее по инструкции"
]
Fim
Кто-нибудь сможет помочь?
Kit Khilobok
Вместо athlets.length athlets?.length ?? 0
Геннадий
Подскажите пожалуйста, где то был записал, да потерял, бесплатно вроде можно сбилдить под мак, там вроде время бесплатное, приложуху.. Сервис
Beach Bum
[
{
"type": "link",
"text": "codemagic.io"
}
]
Геннадий
Да да, он, спасибо
Fim
Да, помогло, благодарю! Первый символ? что означает?
Ольга Мацалова
проверка на Null
Silent Bezmolvny
При попытке компиляции на андрюху вот так застревает. Я как-то нашел видео, где некто во втором или третьем в поле вписал что-то наподобие no render, и после этого у меня заработало. Но теперь не могу это видео найти
Silent Bezmolvny
В общем, кто как решал эту проблему?
Fim
Спасибо за подсказку!
Илья Цымбалюк
ребят есть какая-то статья или дока, для верстки под планшет? Ну типо на телефоне, я сверстал. Выглядит всё как надо, но на планшете всё слишком мелко. Как это учесть?
Serge Shkurko
в flutter есть такая штука как devicePixelRatio отвечающая как раз за соотношение размера экрана и ppi на каком планшете вы тестируете? Если в эмуляторе возможно не корректно настроили устр-во flutter из коробки должен нормально подхватывать devicePixelRatio и отрисовывать интерфейс нормально
Alexander K
[
"Привет всем, есть кто из адептов revenuecat?\nПочему вы выбрали его, а не ",
{
"type": "link",
"text": "https://qonversion.io/"
},
" ?"
]
Dmitry
господа, те кто кодит в vscode, знаете как отключить эту штуку, когда из автодополнения что-то вставляешь, код дальше начинает заливаться серым цветом и подсказки перестают работать, пока эскейп не нажмешь?
Dmitry
вот еще пример подсказка не появляется либо пиши целиком руками, либо жми эскейп ужасно
Dmitry
я как-то отключал, но даже не помню как это гуглил вообще
Владимир Калашников
Какую библиотеку посоветуете использовать для DI?
Dima Kotlyarov
Device PixelRatio
url
Добрый вечер! Посоветуйте хороший курс для изучения Dart с нуля. Спасибо.
Maxim Gora
Сейчас пробую Modular, может заинтересует
Владимир Калашников
А что по поводу Injectable?
Roman Vasiliev
[
{
"type": "mention",
"text": "@bunopus"
}
]
Константин Бобров
Если не трудно, прошу посоветовать как реализовать нечто подобное. Основные критерии: самый верхний и самый нижний отступы равны, формы ввода FORM1, FORM2 в центре экрана. остальное примерно по расположению.
Константин Бобров
вопрос именно в позиционировании, так как элементы по высоте не раны, то и заполнение spaceBetween в column сдвигает элементы не по тем условиям, которые необходимы
Константин Бобров
Спасибо, попробую
Константин Бобров
4 группы всего. logo, forms, button1, button2
Константин Бобров
между группами forms, button1 отступ меньше, чем между button2, button1 и logo, forms
Константин Бобров
спасибо
Константин Бобров
да, норм, спасибо
Alexandr Drobyshev
главное не забывтаьч то экраны есть разные)) и чтоб не наехало дург на друга) по этому я б в SingleScroll пихал + в. Center, тогда будет вам на высоком экране одинаковые оступы свреху и сниза а на низком экране будет скролл если не влезет
Aliman Abu
Кто нибудь создавал проект Flutter firebase на google codelab. Там появляются ошибки в проекте. Нахожу issue в github а там чуваки с гугл отвечают что это часть плана. Че за приколы?
Константин Бобров
я сделал все размеры (кнопок, текстовых полей, отступов, размера лого) на основе размера экрана. думаю такое решение подойдет
Vitaliy Snitko
Создал Dart Web Server проект. Подскажите, как отображать оперативную информацию на странице браузера при запуске проекта? Сейчас чистая страница. А хотелось бы отображать служебную информацию. Что-то типа вывода консоли сделать...
Pavel
в Response отдавать нужный html или тупо строку
Vitaliy Snitko
Сейчас вот это ..write('Request is : $data'); записывает в response инфу и эта инфа отображается на страничке... Но почему-то только первый раз. Все дальнейшие отрабатывания ..write('Request is : $data'); не меняют инфу на странице...
Pavel
а можете код целиком прислать?
Vitaliy Snitko
Future _serverFunctional() async { var server = await HttpServer.bind(host, port); print('Start api-telegram v${version} on $host:$port'); print('Link for test : $platform_url'); await for (var req in server) { var response = req.response; _addCorsHeaders(response); if (req.method == 'POST') { try { var content = await utf8.decoder.bind(req).join(); var data = jsonDecode(content) as Map; response ..statusCode = HttpStatus.ok ..write('Request is : $data'); _handleRequestData(data); } catch (e) { response ..statusCode = HttpStatus.internalServerError ..write('Exception during file I/O: $e.'); } } else { response ..statusCode = HttpStatus.methodNotAllowed ..write('Unsupported request type v${version}: ${req.method}.'); } await response.close(); } } void _handleRequestData(Map data) { print('Get Request : $data'); }
Vitaliy Snitko
И получается что при загрузке страницы отрабатывает строка ..write('Unsupported request type v${version}: ${req.method}.'); Все дальнейшие запросы отрабатывают отлично и данные гоняются туда-сюда, но на странице постоянно остаётся первая строка которая отобразилась при загрузке... Хотя инфа должна меняться.
Vitaliy Snitko
В консоль иде всё выводится отлично. Хочу ещё и на странице видеть то же что и в консоль падает.
Pavel
ну нужно четко понимать что, если страницу не обновлять в браузере она сама ничего туда дописывать не будет
Vitaliy Snitko
Руками обновляю - нет результата... Можно её как-то из кода дёрнуть при ответе, чтобы она обновилась с новой инфой?
Pavel
ну самый простой вариант - пуллинг, браузер делает с определенным интервалом запрос , а сервер отдает актуальные данные.
Pavel
+ нужно понимать что по умолчанию, когда вы браузером обновляете страницу, он отправляет GET запрос
Pavel
А у вас проврка, если не POST то 405 ошибка
Vitaliy Snitko
Да, и поэтому отрабатывает отображение ошибки. Но при дальнейших запросах данные приходят и обрабатываются, но без перезагрузки страницы не отображаются. Не понимаю, как мне апдейтнуть страницу... (
Pavel
я так понимаю у вас есть API телеграма которое присылвает вам POST запрос, вы его обрабатываете и потом хотите вывести в браузере?
Vitaliy Snitko
Да. Именно так.
Артур Питеров
Всем привет!
Артур Питеров
Можете помочь, где можно взять курсы по flutter на русском, бесплатные или хотя бы не очень дорогие?
Pavel
Смотрите, тогда надо делать следующим образом: при POST запросе от телеграма сохраняем в глобальную переменную данные, а где ветка else вместо ..write('Unsupported request type v${version}: ${req.method}. выводим эту переменную. Соответственно, когда у вас приходит пост запрос вы сохраняете, а гет запросом получаете эти данные обновляя тупо страницу браузера
Денис Путнов
[
{
"type": "link",
"text": "coursehunter.net"
}
]
Константин Бобров
в хроме есть расширение для автоапдейта страницы по таймеру, если надо
Vitaliy Snitko
[
"Тоже вариант.. \nНо похоже, что мне в этой ситуации нужно вот это заюзать... \n\n",
{
"type": "link",
"text": "https://dart.dev/tutorials/web/low-level-html/connect-dart-html"
},
""
]
Nero
как с listview.builder реализовать что-то подобное?(скроллить нужно вверх)
Nero
спасибо, попробую отпишу
Nero
работает, но ListView длину бокса растягивает на всю длину экрана, как это поменять?
Ivan
ограничь width так, как тебе нужно, судя по скрину, то это как width / 2
Nero
здесь нужно, чтобы этот бокс расширялся в зависимости от кол-ва текста, но его максимальная длина была примерно 190.5пикселей(половина экрана +-)
Nero
без ListView это работало с ConstrainedBox, но если обернуть в ListView, то и он не помогает
Alexandr Drobyshev
все рабоатет в листвиев
Alexandr Drobyshev
не чо оно не тянет
Nero
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/57699610/controlling-the-width-of-elements-in-a-listview-flutter"
},
"\nнашел такую же проблему"
]
Alexandr Drobyshev
это макс ширина, сделал паддинг с однйо стороны прсото
Андрей Рудин
люблю красивые шрифты :)
Alexandr Drobyshev
[
{
"type": "link",
"text": "https://pastebin.com/kdm6Jp5G"
}
]
Андрей Рудин
мм и в гугле есть ) супер!
Alexandr Drobyshev
ну а для середины вам написали, можете maxWidth можете padding сделать от медиаквери widht/2
Nero
уже сделал, конечный вариант
Alexandr Drobyshev
там где у меня 40 это отступ с противоположнйо стороны, вот можете туда пихнуть половину экрана
Gosling
Пробую установить, прописал эти пути в path и все равно
Alexandr Drobyshev
вот еще одни причина по которой я не сижу на винже уже 7 лет)
Alexandr Drobyshev
и забыл что такое бывает)
Константин Бобров
у него вроде гит не установлен
Константин Бобров
у Игоря
Константин Бобров
или криво поставлен как-то
Amigo 177
Люди кто разбирается в ООП? Объясните, почему важные классы в том же флаттере полностью абстрактные ? В чем магия?
Pavel
чтобы можно было иенять реалтзацию но с одним интерфейсом
Alexei
Разве магия не в том что можно унаследовать от такого класса но создать экземпляр нельзя?
Gosling
Гит откуда устанавливать.
Alexandr Drobyshev
дело не в важности) а в том что этот класс несет какой то интерфейс как правило, который вам нужно реализовать) или же класс сам по себе беполезен, и нужно чтоб вы его наследовали, или по этому имени класса будет потмо где то хранится объект который потмо чреез приведение типа будет юзается в нужных местах
Константин Бобров
[
{
"type": "link",
"text": "https://git-scm.com"
}
]
Alexandr Drobyshev
что значит знак ! в конце переменнйо в дарте лучше скажите ?? типа если там даже null то создаст объект?
Gosling
У меня кстати уже она стоит вроде
Константин Бобров
тогда тыкаться как его в path добавить, если его нету там
Andrei Abramenko
Нет, оно скрашится.
Alexandr Drobyshev
оно ж и так скрашится без ! ??
Andrei Abramenko
Без ! будет analyzer ругаться.
Константин Бобров
Теперь ругается не на гит а на повершелл
Константин Бобров
Что с ним делать я не знаю, но просто ошибку в Гугл скопируй
Sergey ?
Пробовал запускать непосредственно с Powershell?
Sergey ?
[
{
"type": "link",
"text": "https://flutter.dev/docs/get-started/install/windows"
}
]
Константин Бобров
ты обычную windows ставил, не сборку какую-нибудь?
Serge Shkurko
Обернул IconButton в Material(color: Colors.transparent, child: ...) и все заработало как надо
Sergey ?
[
{
"type": "italic",
"text": "(если что на винде есть встроенная програма для снятия скриншотов — Ножницы)"
},
""
]
Gosling
Пошел процесс товарищи??
Gosling
Народ а в целом интересно узнать. Объективно через год изучения флаттер можно найти работу? На какую сумму можно рассчитывать?
Max
Очень молодая технология, хрен угадаешь, что будет через год. Большинство вакансий требуют какого-нибудь бэкграунда, помимо флаттера.
Daniil S
если грамотно подойти к обучению, можно на джуна идти смело
Gosling
Да я просто удивляюсь, если вбить на hh "Kotlin" то там 1800+ вакансий. А по слову flutter 200+
Max
Котлин - язык. Flutter - фреймворк.
Gosling
Ну по запросу Dart еще меньше))
Max
Но по запросу Котлин - совсем не только мобилка.
Daniil S
процентов 50 из 1800 легаси тухлый код на поддержку которого хотят найти человека, который обмазался фреймворками и либами которые используют в данном проекте.
Daniil S
это по моим субьективным впечатлениям
Daniil S
на дарт/флаттер - новые интересные проекты
Max
На Котлине пока мало легаси. Он молодой, как и Dart. Скорее - переписывать legacy Java на Котлин)
Daniil S
всегда приятно в такие вливаться
Gosling
А как думаете тенденция будет меняться с Котлина в пользу Dart?
Bohdan
Можно видел даже Джун вакансии
Bohdan
Стартапы часто на флаттере пишут так как дёшево
Daniil S
Любой новый продукт нужно выкатить быстро, а если еще и качественно получится и флаттер тут не мешает никак, дак еще и на несколько платформ. Как по мне выбор очевиден
Max
Dart съест React Native и прочий Ionic, а не Kotlin.
Vladimir Brejcha
Скорее Kotlin multiplatform съест flutter :)
know-it-all
там нет cross platform UI
Danila Manila
ой, а как же юи тогда реализовывать? под каждую платформу свое что-то?
know-it-all
поэтому конкурентом флаттеру это точно не назвать
Danila Manila
буду надеяться на его процветание)
Danila Manila
вот только хармони ОС, и фуксия... смогут ли они и там поддержки добиться
know-it-all
к сожалению, гугл похоронил много интересных проектов, но флаттер, судя по всему, получил карт бланш
Max
Фуксия изначально предполагает Dart как основной язык пользовательского слоя. Harmony OS в ранней фазе эмулирует API Андроида, и Huawei точно не упустит перспективы, связанные с Dart/Flutter
Danila Manila
Абсолютно солидарен. Из-за этой мысли боязко было начинать знакомство с флаттер
Danila Manila
Я пока-что не мегамозг) но а так да, после реакта не такой сложный, но находятся кейсы, которые выбивают. Хотя это скорее из-за необразованности, чем от сложности фреймверка\языка
Константин Бобров
Насколько сильно верстка отличается при просмотре через хром (с выбором устройства) и через эмуляторы?
Даниил Левицкий
Фуксию Гугл же отдал на опенсорс поддержку == убил. А Хуавей врятли будет завязываться снова на технологии Гугла, пока что они просто засунули андроид под капот и забили)
Danila Manila
Есть вот такой пример кода. Анализатор ругается, что пытаюсь сложить обекты (The operator '+' isn't defined for the type 'Object')
Andrei
К number приведение сделай
Danila Manila
вот так уже работает. На сколько правильный финт ушами? Может есть получше вариант реализации
Danila Manila
[
"т.е. ",
{
"type": "code",
"text": "one as num"
},
" — нормальная практика?\n(первый раз с типизацией)"
]
Andrei
T extends num попробуй в дженерике
Danila Manila
Спасибо!) магия
Andrei
Ну странный у тебя кейс. Если числа передаешь, зачем дженерик делать ?
Alexandr Drobyshev
тут не надо &&?
Alexandr Drobyshev
там же даже если одна из двух прееменных будет null условие выполнится
Mitai
от куда вы это берете? их разработка изначальна был опенсорс, теперь они просто сказали если вы хотите поучаствовать пожалуйста, но ни кто не говорил что гугл на нее забил
Max
Это не так, насколько мне известно. Там своё микроядро и слой эмуляции андроида.
Danila Manila
Да, мой косяк. пример надуманный
Mitai
прибегут напишут какую то дичь, говоришь дай ссылку на источник, в ответ тишина
Andrei
Может у кого есть инфа когда появится эмулятор под m1 apple silicon ?
Danila Manila
а как тогда лучше сделать?
Alexandr Drobyshev
суть в том что такая запись, говрит что там любой тип может быть, а вы проверятее только на нулл. и потмо юзаете как num
Alexandr Drobyshev
вот это странно
Andrei
Если у тебя это кастомный тип с наследованием от базового класса - переопредели там + sign и в дженерике укажи базовый класс
Alexandr Drobyshev
значит либо сразу num юзайте если там точно num
Alexandr Drobyshev
или же надо еще проверять тип видимо
Andrei
Там кастомный объект по логике у него
Danila Manila
не, ща пример покажу)
Даниил Левицкий
[
{
"type": "link",
"text": "https://www.xda-developers.com/harmony-os-2-0-initial-version-based-on-android/"
}
]
Alexandr Drobyshev
ну так и для чего там все равно T? прайс может быть не число?
Alexandr Drobyshev
CustomSlider (...
Alexandr Drobyshev
пишите ну и переменные соотвественно тоже num
Danila Manila
ага, прилетает null. Может я не правильно делаю, но кейс такой: при клике открывается окно, идет запрос на серв, и берется цена. после эта цена попадает в слайдер.
Max
Интересно. Но нужно больше информации, конечно. Использовать куски кода Android для эмуляции Android API - один вариант. Выпустить пока перелицованный андроид и потом заменять ядро "на лету" - другой. Но в телевизорах и часах у них точно не Андроид.
Alexandr Drobyshev
ну видимо у вас прилетает стринг какой нить прайс
Alexandr Drobyshev
посомтрите тчо прилетает от сервера
|