Статья :: Dart & Flutter по-русски |
Программирование : Dart & Flutter по-русски
Анатолий
хмл структурно более подходит для разметки чем класс
Evgeny Kot
Это тренд на волне jsx
Анатолий
если в хмл элемент в элементе норма, он для этого и делался собственно, то класс в классе в классе в классе мне немного ломает мозг
admin
Много try - это плохо или нет? ??
admin
Или же, все зависит от кейса? ??
admin
[
{
"type": "mention",
"text": "@bunopus"
},
" \nа в дарте есть какая-то штучка, чтобы можно было объявить абстрактный класс и абстрактный метод, который может принимать любые параметры, но при этом, не написать аля:\n",
{
"type": "pre",
"text": "abstract class Foo {\n void execute(); // Метод в дочерних классах может принимать любые параметры, - это можно как-то сказать?\n}\n\nclass Bar extends/implements Foo {\n void execute(String s) => s;\n}",
"language": ""
},
""
]
admin
А разве так хорошо?
admin
Он может мешать что угодно
Анатолий
Что ты там делаешь?
admin
[
{
"type": "pre",
"text": "class Bar implements Foo {\n void execute(String s, [int a])\n}\n\nclass Bar1 implements Foo {\n void execute(int s, {String s})\n}",
"language": ""
}
]
admin
Ну вот в этом и проблема :(
Vadim Tsushko
[
"В каком то приближении можно:\n",
{
"type": "link",
"text": "https://dartpad.dartlang.org/1105a830606b0ab4f5c255714e989be6"
},
""
]
Vadim Tsushko
Проверки типов параметров при этом не удастся добиться
Evgeny Kot
Если их не миллион то нет
Vadim Tsushko
Я чуть выше вариант предложил
Evgeny Kot
Ну это не совсем то, да и попахивает.
Evgeny Kot
Впрочем какой запрос :-)
Алексей Данилевский
[
"В этом случае можно сделать так:\n",
{
"type": "pre",
"text": "abstract class Foo {\n void execute(Map params);\n}",
"language": ""
},
"\nВ ",
{
"type": "code",
"text": "params"
},
" можно запихнуть что угодно.\n\nНо моё мнение, что если такая потребность появилась, то это говорит о том, что выбранное решение с очень большой вероятностью ошибочно. И нужно задуматься над изменением архитектуры/логики."
]
O K
Это запашок, стоит принюхаться. Иногда такое может говорить о том, что бизнес-логика чересчур опирается на исключения. Exception-based data flow как правило оказывается лапшой похлеще чем код, использующий goto, независимо от языка :)
Grabli66
А try catch в dart-е сильно замедляет исполнение блока, входящего в него?
O K
Вроде нет, там достаточно легко всё.
Grabli66
У нас в таких случаях обычно говорят: "Это не говнокод - это бизнес логика" :)
admin
У меня либа для паба, в либе вызывается некий метод Вот и все ??
admin
Я обмазался двумя try'ями и мне хватит ??
O K
а зачем? Одного же хватить должно, просто с двумя catch под разные типы
O K
или там еще логика какая-то внутри?
admin
Грубо говоря - логика
Kirill Ponomarev
Добрый день. В последнем Angular как использовать bootstrapFactory? Интересует внедрение провайдеров. Как это правильно делать?
admin
Если кратко - либа для событий (да-да, очередная) Соответственно, есть event который должен иметь некий метод и есть слушатели, которые должны иметь тоже метод для обработки Поэтому - нет, не тот случай :)
Наиль Гилазиев
а я ведь правильно понимаю, что flutter в platform_channels под капотом использует jni под android'ом?
Георгий Малков
Если идет проверка на null, то да, через try будет заметно дольше работать Т.е. те веши которые можно проверить без try лучше делать без try)))
admin
Да не, там вызов метода у класса который мне дали
Grabli66
Добрый вечер! Развернул пример angular, через stagehand web-angular. Сделал pub build. Получил ошибки. Вот одна из них: [Error from Dart2JS on admin_adv|web/main.dart]: web/packages/observable/src/collections/observable_list.dart:65:29: Not a constant expression. return const ListDiffer
admin
Запилю те костыль ??
admin
Ну в дарте из шарпа есть ?.
admin
Поэтому более менее
Grabli66
Может по моей проблеме у кого есть ответ?
Дмитрий Иванов
Вроде обещали non nullable types, но пока непонятно когда, Вячеслав вроде писал что не скоро
admin
[
{
"type": "pre",
"text": "class ListDiffer {\n const ListDiffer.diff(T previous, T current);\n}",
"language": ""
},
"\n?"
]
admin
[
{
"type": "link",
"text": "https://github.com/dart-lang/sdk/issues/22"
}
]
Grabli66
При попытке сбилдить pub build получаю ошибку в этом месте: "Not a constant expression"
admin
Я еще плохо в ошибки дарта умею Но мне чет кажется, что он орет, ибо у тебя конструктор не конст
admin
> The constructor being called isn't a const constructor. А нет, вру
Grabli66
Это логично. Этот ListDiffer это библиотечная какая то фигня. Не моя
Kirill Ponomarev
[
{
"type": "mention_name",
"text": "Grabli66",
"user_id": 545010591
},
" вы выполнили команду stagehand и пробуете запустить?"
]
Kirill Ponomarev
sdk какой версии?
Grabli66
Да. Я создал проект stagehand web-angular
Kirill Ponomarev
Потом pub get наверное?
Grabli66
Да. VSCode сделал pub get
Kirill Ponomarev
Пробую на своей машине. Установил stagehand 1.1.8. Затем выполнил stagehand web-angular. Затем pub get. Зависимости успешно скачались и скомпилировались. pub build отработал без замечаний.
Kirill Ponomarev
Dart 2.0.0-dev35
Kirill Ponomarev
Windows x64
Grabli66
Завтра попробую на винде
admin
Юзал кто-то stdin из io?
admin
Ну, или даже не так Кто-то писал тесты для штуки, которая в консоль выводит некоторое сообщение?
admin
Мне нужно вытащить строку из консоли и "скормить" ее в проверку
Evgeny Kot
Сделать абстракцию, замокать.
admin
А можно пример или статью? Я слишком не силен в тестах ??
admin
А хотя, я могу вместо принта изменить локальную переменую
admin
И кинуть на проверку ее
Evgeny Kot
[
"Ну используя паттерн ",
{
"type": "link",
"text": "https://ru.wikipedia.org/wiki/%D0%92%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8"
},
"\nМы используем в программе не реальный stdout, а типа MyStdOut. Только по-умолчанию у него внутри зашит реальный stdOut. А в тестах подменяем этот класс"
]
admin
Это имеет смысл в тестах?
admin
И еще такой вопросик: 'SomeClas' == SomeClass ?
admin
Ну, то есть, если ты суешь имя класса, то там будет просто строка из которой можно потом создать объект?
admin
Ну, предположим есть тот же контейнер для DI Он реализует ленивую загрузку
admin
Если ему передать название класса, он сможет потом из этого создать объект?
admin
Без разницы как, любыми средствами которые есть в дарте для этого
Evgeny Kot
[
"Есть пакет DI ",
{
"type": "link",
"text": "https://github.com/dart-archive/di.dart"
},
"\nНо, он устарел. Пока к сожалению на сервере ничего другого нет, они обещают сделать фреймворк, но пока не сделали"
]
Evgeny Kot
В web юзайте Ангуляровский
admin
> ..bind(Fuel) ..bind(GenericCar) ..bind(ElectricCar)
Grabli66
[
"Доброе утро. Попробовал на винде пример от stagehand web-angular. Во время pub build, получаю ошибку Type variable 'T' can't be used as a constant expression ",
{
"type": "hashtag",
"text": "#lib1"
},
"::ObservableList::\ncalculateChangeRecords::T.\n return const ListDiffer ]
Grabli66
версия дарта 2.0.0-dev.40.0 ; версия stagehand 1.1.8
Vadim Tsushko
[
"Скорее всего заработает на Dart 2.0.0-dev35, как у ",
{
"type": "mention_name",
"text": "Kirill",
"user_id": 160746877
},
" Ponomarev. Альфы Dart, Angular и Angular_components не успевают друг за другом иногда."
]
Kirill Ponomarev
Обновил dart до 2.0.0-dev.40.0 и получил туже ошибку.
Grabli66
Установил Dart 2.0.0-dev35. Заработало :)
Vadim Tsushko
[
"Вот тут что то подобное обсуждают ",
{
"type": "link",
"text": "https://gitter.im/dart-lang/angular?at=5aaffce7fa066c53254a63b5"
},
""
]
Grabli66
Какая то печаль. Решил скомпилировать этот проект с помощью dartdevc. Получил ошибки. [error] The expression in an assert must be of type 'bool'. (package:angular/src /core/application_ref.dart, line 30, col 10)
Grabli66
Установил Dart 1.24.3. Ошибок не возникает. Но конечно dartdevc жрёт столько памяти. Просто ужас. Висит 9 процессов дарта и в сумме гигабайта три жрут. Современные технологии, блин. :)
admin
У меня когда паб зависимости обновляет, то жрет по 2 гига ??
O K
пффф. Сборка проекта и подпроектов, 16 памяти, 16 свопа, занято ВСЁ :)
admin
Не соре, у меня тока 8
Анатолий
Вы там гугл пишете?
Анатолий
Или винду собираете на дарте?
Evgeny Kot
700к строчек на Дарте
Evgeny Kot
100 репозиториев
Grabli66
А как же вы разрабатываете то? Поправил строчку, нажал обновить в браузере и ждёшь 10 минут пока соберётся?
Grabli66
Ну ладно. А если новый функционал какой вписать надо. Надо же воочую узреть как оно выглядит, работает.
admin
У меня больше 1000 пока не было в проекте ??
Grabli66
Я пока немного в шоке от того как долго проект angular компилируется, и от потребления памяти. Лучше дальше сервер на дарте буду пилить. :)
Alexander Petrov
GWT permutation!
Alexander Petrov
я чето вспомнил сколько эта фигня компилится. вот это правда долго
Grabli66
Читал, вроде хотели компилировать дарт в нативный код через llvm, заглохло дело?
admin
всем привет!! может кто подсказать, где найти русскоязычную лит-ру (ресурсы) по этому замечательному языку ??
Evgeny Kot
[
{
"type": "link",
"text": "bit.ly/dart_ru"
}
]
Evgeny Kot
Там статьи на Хабре и плейлисты
admin
За 300 рублей есть книжка (перевод с инглиша)
Анатолий
Там эе для дева есть всякие инструменты для ускорения. Дартиум тот же не ждет перевода в жс, а сразу дарт смотрит, с ним быстрей
Анатолий
Или вы там цифрами оперируете уже с учетом всего этого добра?
Grabli66
Дартиум уберут. Когда dart 2 выйдет.
Анатолий
когда дарт 2 выйдет они обещали что все будет хорошо
admin
Это браузер который?
admin
Дык его вроде уже убрали
admin
Вместо него dartpad
admin
Я его не видел на сайте
Grabli66
Вместо него dartdevc, который поджирает много памяти :)
Анатолий
не, ты что-то перепутал, дартиум это хром который может дарт код исползять
Evgeny Kot
dartium просто не поддерживается
admin
Да не не, я про иде говорил
admin
Я просто дико перепутал)
Evgeny Kot
Но это было очень давно
admin
Я видел в книге 2013го года
Evgeny Kot
А сейчас какой? ;-)
admin
Больше литературы я не нашел)
admin
Прикупил по дешовке, но понял что облажался когда увидел версии)
admin
Кто-то вызывает некие события в слушателе? Например: слушатель на нового юзера Он вызывает евент отправки мыла, евент для уведомления (новый юзер) и т.п
Анатолий
я создаю, косьвенно, в ноде
admin
А ты не могешь случаем накинуть псевдокода как было бы удобно это автоматизировать?
Evgeny Kot
А поподробнее?
admin
Какая-нибудь пропертя или метод который будет этим заниматься
admin
Ну вот у тебя есть слушатель на нового юзера Тебе нужно отправить письмо на почту и добавить уведомление о том, что появился новый юзер на сайте Все это на евентах
admin
В слушателе тебе нужно юзать 2 других евента
admin
У меня просто сейчас либа для события, я хочу как-то автоматизировать эту штуку (на уровне либы)
Анатолий
Если я правильно понял: Есть евент листенер, который слушает создание пользователя В этом листенере создается профиль пользователя И есть другой евент листенер который слушает создание профиля пользователя И там отправляет мыло с просьбой заполнить профиль
admin
Нет, нет Обычный Observer А слушатель внутри себя генерирует еще 2 евента
admin
[
{
"type": "pre",
"text": "class NewUserListener {\n NewUserListener() {\n new SendEmailEvent('email', someData);\n new AddNotificationEvent(someData);\n\n // Какая-то другая логика\n }\n}",
"language": ""
},
"\nК примеру что-то такое (названия для большего понимания)"
]
admin
> new SendEmailEvent('email', someData); new AddNotificationEvent(someData); Я вот эту штуку хочу "автоматизировать"
Grabli66
Что то не очень понятно, что вы хотите сделать.
admin
Вот эта штука понятна?
admin
[
{
"type": "mention_name",
"text": "0xff00ff",
"user_id": 49566130
},
" ",
{
"type": "mention_name",
"text": "Grabli66",
"user_id": 545010591
}
]
admin
Вот я хочу создание объектов событий перенести на библиотеку
admin
А ладна, забейте ??
Serhiy Z
Вечер добрый. Может кто видел вменяемую документацию как во флаттере юзать i18n? Читаю код их примера сток маркета, и немного в шоке от количества манипуляций и требуемых хелпер-класов. Нету простого каконо то решения как в андроиде, накидываем все в файлы разбитые по локалям и подставляем в код. Может кто видел пример простого решения? Спс
Losedges
Привет всем, хочу попробовать заменить реактнэтив на разработку на флаттре реальных понятных особо примеров мало (может плохо искал) появились вопросы работа с картой работа с камерой/микрофоном нотификации локальные и пуш база данных ( использую realm, есть ли альтернатива похожая) стоит ли переходить или пока рано, поделитесь мнением, если не трудно
Evgeny Kot
[
"пример с микрофоном ",
{
"type": "link",
"text": "https://github.com/rxlabz/sytody"
},
""
]
Losedges
спасибо посмотрю, а к камере свой интерфейс можно прикрутить
Evgeny Kot
[
"Для БД и подобных вещей можно посмотреть на Firebase ",
{
"type": "link",
"text": "https://codelabs.developers.google.com/codelabs/flutter-firebase/#0"
},
""
]
Kirill Ponomarev
Кто-то уже писал билдер ддя build_runner?
Kirill Ponomarev
Я так понял, что трансформеры устарели.
Лёша Никитин
Привет! В Dart Angular можно экстендить существующие компоненты? Например, есть удобный готовый компонент в angular_components, но нужно в шаблон добавить дополнительный блок.
Evgeny Kot
Да, мы его юзаем. А какой вопрос?
Evgeny Kot
Переопределить шаблон не получится
Leonid Bagulin
Шаблон нет, но метаданные можно
Leonid Bagulin
[
"“Annotate Once: AngularDart” ",
{
"type": "link",
"text": "https://medium.com/dartlang/annotate-once-angulardart-825479b1e78f"
},
""
]
Evgeny Kot
Ну, тут был вопрос про шаблон
Kirill Ponomarev
Хочу разобраться и написать свой. Документации нет. В чем принцип?
Kirill Ponomarev
Создаем отдельную библиотеку. В не должен быть некий класс или функция экспортирующая Builder? Куда его поместить? Что в зависимостях?
Kirill Ponomarev
Как его потом использовать? Хочу только при релизеой сборке его вызывать. Как определить фильтр ассетов? Например, main.dart
Kirill Ponomarev
Я пытался разобрать json_serializer но что-то запутался.
Лёша Никитин
Спасибо! Посмотрю что можно с этим сделать
Evgeny Kot
До компа доберусь и отвечу
Evgeny Kot
[
"Типа так ",
{
"type": "link",
"text": "https://gist.github.com/bunopus/9674a279513912b9579cb96a94c9e783"
},
"\nСорян, подробнее пока времени нет, но если что - спрашивайте"
]
admin
[
{
"type": "link",
"text": "https://gist.github.com/bunopus/3176997659484cb2ddf580e310897c04"
},
"\n> Для того, чтобы отредактировать контакт необходимо применить паттерн builder\nРечь про fluent interface для сеттеров что ли?"
]
|
|
|