Программирование : Dart & Flutter по-русски
???????
Ну jsonEncode сам дергает toJson методы у неизвестных объектов. Но тебе никто не запрещает сделать так как ты хочешь.
???????
И еще небольшой лайфхак. у jsonEncode есть опциональный параметр - toEncodable
???????
Функция, которой будет преобразовываться хитровыбоенный объект. Если параметр опущен, то уже будет попытка дернуть toJson у объекта.
???????
Ну и у jsonDecode, соответсвенно, есть параметр с функцией ревайвером.
???????
[
{
"type": "link",
"text": "https://api.dartlang.org/stable/2.6.0/dart-convert/jsonEncode.html"
},
"\n",
{
"type": "link",
"text": "https://api.dartlang.org/stable/2.6.0/dart-convert/jsonDecode.html"
}
]
Yevgen Vinichenko
Ребят подскажите в чем проблема, пытаюсь сделать билд
KeepOnSmiling ??
Не пойму никак из документации, для чего используют Completer? В каких случаях нужен именно он, а не Future?
KeepOnSmiling ??
Какая-то проблема с опциями в Gradle-файле.. Попробуйте сделать пустой проект и сравнить тот gradle с вашим, возможно удасться найти ошибку
Yevgen Vinichenko
в каком из? я уже все файлы папки сравнил
KeepOnSmiling ??
android/build.gradle android/app/build.gradle
Yevgen Vinichenko
вот чуть раньше такое писало, что то с платформ тулс, и оба файла одинаковые с пустым проэктом(
KeepOnSmiling ??
[
"Просто ",
{
"type": "code",
"text": "flutter build appbundle"
},
" тоже выкидывает эту же ошибку?"
]
Семён undefined
постоянно орет в консоль "VirtualView node must not be the root node.", отключал всё что можно. что может быть?
KeepOnSmiling ??
А пустой проект собирается?
KeepOnSmiling ??
Может platform-tools реально не установлен? :)
Yevgen Vinichenko
точно такой же проэкт который уже в сторе собирается а этот нет,
Yevgen Vinichenko
ладно попробую новый проэкт создать
Yevgen Vinichenko
может сдк переустановить?
KeepOnSmiling ??
Я бы реально все файлы построчно сравнил через diff, если на то уж пошло..
KeepOnSmiling ??
Чтобы посмотреть какие именно строчки различаются и почему
Yevgen Vinichenko
понял, пасиб, пойду смотреть
KeepOnSmiling ??
[
"У вас винда, тут сложнее, но если доступ к diff-утилите есть, то: ",
{
"type": "code",
"text": "diff -qr dir1/ dir2/"
},
"\nсравнит пофайлово рекурсией все файлы в двух директориях"
]
KeepOnSmiling ??
В винде вроде линукс хотели забацать :) Может уже работает
МОЙ НИК
Ребята, нужен свободный человек со знанием flutter, платим очень хорошо
Max
Лучше комп перезагрузить, серьезно
Yevgen Vinichenko
спасибо
Dima
да, все работает, даже установить можно из windows store
Max
[
"Мы тут, вроде, все свободные люди)\n",
{
"type": "link",
"text": "https://github.com/rudart/community"
},
""
]
МОЙ НИК
Свободный в плане работы
Dima
[
{
"type": "link",
"text": "https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/fc"
}
]
МОЙ НИК
Что бы занятья разработкой
Семён undefined
вы бы лучше сначала прайс озвучивали
Dima
Скиньте дизайн в этот чат на общее обозрение, дадим множество эстимейтов)
Max
Я скинул ссылку, там вроде есть что-то про вакансии. Мол куда их слать
Dima
А как в России с работой в компаниях по флаттеру? По Украине пока маловато, 5-10 вакансий обычно висит довольно долго
Andrei
В Минске вакансий вообще нет ??
Vadim Lukichev
Completer - как бы выразиться - "разорванный" )) Future. Одну часть часть слушаешь, вторую часть передаешь куда угодно, в любые дебри кода, и когда вторая часть, где-нибудь "комплититься", первая часть узнает об этом. Как бы можешь обернуть любой код/логику во Future. На части я разбил образно, там конечно, один объект - completer.
Dima
судя по гуглу, в след году должно уже быть много вакансий, правда смущает в конце графика подение. Может еще что-то новое вышло?!
KeepOnSmiling ??
Ничего себе. Теперь уловил логику, спасибо!
Alex Kharechko
это не падение, обычна так всегда потом что биг дата
Dima
самое интересное, что по запросам ионик до сих пор в мире на много чаще. Скорее всего легаси сапорт какой-то
Игорь Чичерин
как это победить?
Игорь Чичерин
[
{
"type": "pre",
"text": "flutter: type 'LatLng' is not a subtype of type 'LatLng' where\n LatLng is from package:google_maps_flutter/google_maps_flutter.dart\n LatLng is from package:latlong/latlong.dart",
"language": ""
}
]
(;?_?) Ivan Zhuravlev ???>?
укажи пакет явно. написано же
(;?_?) Ivan Zhuravlev ???>?
у тебя заимпортился не тот. заимпорти тот
(;?_?) Ivan Zhuravlev ???>?
либо читай про алиасы при импорте
Игорь Чичерин
у меня функция принимает 2 разных типа она так считает префиксы не помогают тут
(;?_?) Ivan Zhuravlev ???>?
разбей на две
Andrei
да нет, все так. Ionic, React Native уже давно на рынке, и пользуются доверием у заказчиков, поэтому проще убедить заказчика использовать ionic чем flutter например
???????
as show hide выбирай любое решение или сочетай
Игорь Чичерин
эксперементирую
???????
чего там эксперементировать
???????
пройти прочитать про импорты
???????
а потом спрятать лишнее или наоборот, показать только нужное
Taras
Ребят, подскажите пожалуйста. Использую webview_flutter. Не показывается клавиатура. В чем может быть причина? Спасибо
Ivan
может быть в самом модуле логи нативки смотрел?
Taras
Display ID mismatch found. ViewRootImpl displayId=63 InputMethodManager displayId=0. Use the right InputMethodManager instance to avoid performance overhead.
Taras
[
"нашел даже баг уже заводили, только не пойму почему он closed\n\n",
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/38375"
},
""
]
Taras
разобрался. оказывается это уже пофиксили во флатере на master, а в stable пока не завезли
Yerbolat
всем привет есть классы например: class Country { int id; String name } class City { int id; int countryId; String name; } какие решения можно применить для связи двух классов? Я пришел из веба, в laravel есть такая вещь как 'hasOne, hasMany' после чего можно писать таким образом: Country country(1, 'someCountry'); City city(1, 'someCity'); echo country->city->name; _______ 'someCity'
???????
[
"Както так, например\n\n",
{
"type": "link",
"text": "https://dartpad.dartlang.org/d24227a09cbc4ea5fd5b2305e6ec4b68"
},
""
]
???????
Еще у списка детей можешь сделать myList.where((child) => child.parent == myParent)
Yerbolat
Спасибо, помогли!
Kherel
[
"Привет. пытаюсь сохранить виджет в виде картинки делаю как в документации\n",
{
"type": "pre",
"text": "RenderRepaintBoundary boundary;\nboundary = globalKey.currentContext.findRenderObject();\nvar image = await boundary.toImage(pixelRatio: 3.0);\nvar byteData = await image.toByteData(format: ui.ImageByteFormat.png);\npngBytes = byteData.buffer.asUint8List(); \n..\nImage.memory(pngBytes)",
"language": ""
},
"\n\nвсе работает, но не понимаю, как превратить это в файл"
]
Kherel
может быть кто-то подскажет
northelks
file.writeAsBytes?
Kherel
спасибо все получилось!!!
Dr
[
"всем привет.\nнужна помощь.\nЕсть строка JSON \n",
{
"type": "pre",
"text": "{\n \"category\": \"0\",\n \"images\": [\n {\n \"index\": 1,\n \"image\": \"Slon_10410_1.jpg\"\n },\n {\n \"index\": 2,\n \"image\": \"Slon_10410_2.jpg\"\n }\n \n ],\n \"ad_city\": \"Город Н\",\n \"ad_phone\": \"+375123456789\",\n \"email\": \"info@example.com\",\n \"ad_headline\": \"Продам Слона\",\n \"ad_price\": \"5000\",\n \"publication_date\": \"2019-10-23 14:02:21\",\n \"ad_priceinrub\": \"\",\n \"ad_text\": \"Слон большой, качественный\"\n}\n\n",
"language": ""
},
"Описываю это всё дело классом, например \n",
{
"type": "pre",
"text": "class User {\n String category;\n List images;\n String adCity;\n String adPhone;\n...//\n",
"language": ""
},
"Распаршиваю. \nВ виджете получаю значения этих полей, например:\n",
{
"type": "code",
"text": "user.ad_headline"
},
" и т.п.\n\nКак получить значения из ",
{
"type": "code",
"text": "List images;"
},
" ??\nт.е. я хочу получить значения(грубо говоря) из ",
{
"type": "code",
"text": "user.images.image\n\n"
},
"буду очень благодарен и признателен за любую помощь\nflutter только неделю изучаю"
]
???????
user.images Так и получить
???????
user.images[0] - получить первую картинку
???????
user.images.firstWhere((v) => v.image == "jopa.jpg") получить картинку у которой поле image - jopa.jpg
Dr
значит, я бы на верном пути. спасибо!
Max
Кажется вам надо почитать первые шаги в дарте
???????
Вчера зарекался не помогать таким "флатеристам" и вот опять(
Dr
согласен. но приходится читать и крутить одновременно
???????
Первые шаги, а не документацию
Max
Ты вот не помогаешь с нормальными вопросами, вернее помогаешь, но очень неочевидными намеками и кучей флейма) А тут вон человек понятия не имеет что такое массив
???????
[
"Закрывай IDE и иди сюда\n\n",
{
"type": "link",
"text": "https://dart.dev/tutorials"
},
"\n",
{
"type": "link",
"text": "http://dartpad.dartlang.org"
},
""
]
Dr
поняте про массив имею )) и способы обращения к его элементам перебрал все, втч и тот, что показали. ладно, пойду читать
Max
То есть, наш способ не сработал? Просто обращение по индексу?
Max
А ты json точно сериализовал?
Max
И ошибок ты не написал никаких
Alexandr Dolgov
промазал сорри (про стикер)
Денис
Ребят подскажите, на андроиде при сворачивании приложения и возвращения обратно оно просто перезапускается полностью, что сделать чтобы сохранялось?
Dr
сработал, но, скорее всего ошибка уже в самих данных или в обработке json. с этим я дальше разберусь сам. мне нужно было просто у кого-то уточнить 100% способ как это сделать. т.к. я тут сижу один и тупо не у кого спросить.
???????
Вот, иди думай, что тут написано
Dr
?? обязательно разберусь.))
Max
1. contains это не подходящая функция для полного сравнения имени 2. незачем делать isName, лучше сделать getter name 3. соответственно, не очень понятно зачем использовать where, если есть firstWhere
???????
Может быть все это затем, чтоб человек научился обходить коллекции?)
???????
Ты мне пытаешься объяснять эллементарное?)
Max
Ну так может давать примеры в которых уместны коллекции?)
???????
- Давай примеры сам - Я??????
Max
Я не собирался давать примеров, потому что их никто не просил
???????
Ну так чего встреваешь?
Max
Вижу ошибку, пишу об ошибке
???????
Какую ошибку ты пишешь?)
Max
Вижу недоразумение, пишу о недоразумении
???????
Ты видешь то, чего не понимаешь, высираешь недоразуменее
Max
Лол. Ты же в курсе, что коллекции это не панацея? И далеко не первое, что людям стоит учить в языке.
???????
Ты меня теперь еще и учить собрался учить?)
Max
И я прекрасно понял твой код. Особенно после пояснения, что ты специально так сделал.
???????
Ну научи меня учить, давай
???????
Я с удовольствием послушаю
Anton Karton
боже мой солько можно
???????
Все? Спецкурса для преподавателей не будет?
???????
Будет только тихий пук?
Anton Karton
Чел, нахера ты каждый день в чате на две с лишним тысячи человек с кем-то о чем то бестолково споришь?
Max
Фокс, отвали. Ты написал хрень, я тебе написал почему. Если тебе не нравится мой тихий пук, то можешь также тихо плакать в углу
???????
Меня забавляет опускать неумех
Олжас Сулеймен
свой 5 копеек: where(...).forEach(print);
???????
Хобби у меня такое
Anton Karton
Круто что ты так много знаешь, но зачем остальным читать ваши перепалки?
???????
Затем, что тыкаю в мочу рылом, чтоб больше не пытался писать мне глупости
Max
Обычно это делают в ЛС. Тут тебе об этом и говорят
???????
Так и пиши мне в лс
Max
Всем срать на то кого куда ты там пытаешься засунуть
???????
Прелюдно возникаешь - прилюдно опущен
Max
Но... Ты... Же возник
Max
Короче, если будут предъявы, пиши в лс)
???????
Так будет спецкурс для меня или нет?
Anton Karton
Завязывайте, чатик про флаттер и дарт, а не про вас)
???????
Я жду. Тыж многое знаешь о подготовке ньюфагов, опыт, наверное, было. Поделись
Max
Если кому интересно, то он в ЛС так и не написал. Хотя так жаждил чтобы я его обучил. Выходит, что ему лишь бы на публике самоутвердиться.
???????
Так у тебя были публичные вскукареки. Вот публично и делись.
???????
Или прекращай вертеть жепой, поступи как мужчина и извинись, тоже публично.
Hovard Lovecraft
наркоманы - флудерасты :)
Денис
Блин подскажите пожалуйста почему при push вместе с hero фрейм рисуется около 200мс
Денис
flutter run --profile
northelks
потому что анимация это сложное дело
(;?_?) Ivan Zhuravlev ???>?
потому что проверяй на flutter run --release на девайсе
Денис
а можно запустить профайлер поверх flutter run --release
(;?_?) Ivan Zhuravlev ???>?
щас бы с профилированием приложение работало так же быстро как в релизе
Денис
ну я пытаюсь проверить где у меня просадка по фпс, хотелось бы чтобы всегда было ~60
Andrei Abramenko
Вроде как в MaterialApp есть параметр showPerformanceOverlay
Daniil Kolyasnikov
Во время flutter run вроде можно p нажать и будет инфа о FPS
Денис
Спасибо буду тестить
Денис
При --release не работает
Yerassyl Maikhanov
вопрос по соединению к интернет
Yerassyl Maikhanov
как проверить что есть доступ до определенного сервера
Yerassyl Maikhanov
пробовал так
Yerassyl Maikhanov
[
"try {\n final result = await InternetAddress.lookup('",
{
"type": "link",
"text": "google.com"
},
"');\n if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {\n print('connected');\n }\n} on SocketException catch (_) {\n print('not connected');\n}"
]
Yerassyl Maikhanov
и вот так
Yerassyl Maikhanov
[
"var connectivityResult = await (Connectivity().checkConnectivity());\n if (connectivityResult == ",
{
"type": "link",
"text": "ConnectivityResult.mobile"
},
") {\n return true;\n } else if (connectivityResult == ConnectivityResult.wifi) {\n return true;\n }\n return false;"
]
Yerassyl Maikhanov
в обоих случаях он говорит есть соединение но по факту сервер выключен
Serge Shkurko
есть подозрение, что в китае работать не будет :)
Yerassyl Maikhanov
мне не надо китай
Yerassyl Maikhanov
я его поставил просто так
Yerassyl Maikhanov
по культуре
Serge Shkurko
Ну вообще как я постаю на продукте в разработке - использую connectivity + обрабатываю все ошибки с сервера т.е. есди интернета нет - отображаю соответсвующую информацию, если где-то словил exception при работе с api, отображаю сообщение о проблеме соединения с сервером
Serge Shkurko
Тебе для отображения в ui надо?
Yerassyl Maikhanov
мне для проверки есть доступ к серверу или нет
Yerassyl Maikhanov
просто клиент может быть в метро
Yerassyl Maikhanov
тогда из sqlite инфу беру
Yerassyl Maikhanov
а если есть интернет
Yerassyl Maikhanov
то с сервера
Serge Shkurko
http.get оберни в try/catch, в exception проверь статус - если отхватишь SocketException - доступа к интернету нет, и тогда применяешь другую стратигию - подтягиваешь с sqlite
???????
Это ооооооооооооооооооочень большой костыль.
???????
[
"Но если делать через него, то докину вот что:\nк http.get добавь ",
{
"type": "code",
"text": ".timeout(Duration(seconds: 15))"
},
""
]
Serge Shkurko
Готов выслушать твои варианты
???????
Запросто. Смари, дело в том, что мы работаем с реактивщиной
(;?_?) Ivan Zhuravlev ???>?
почему не брать сразу из sqlite а потом уже обновлять с сервера?
???????
Эй, я как раз это пишу)
???????
[
"И получение чегото может запросто выглядеть вот так:\n",
{
"type": "pre",
"text": "Stream fetchSomething() async* {\n Future someLocal = fetchLocal();\n Future someNetwork = fetchNetwork();\n yield await someLocal;\n yield await someNetwork;\n}",
"language": ""
},
""
]
???????
Но естественно, это лишь упрощенно и на пальцах. Нужно добавить некое middleware для обработки кодов статуса и ошибок.
???????
Если вы используете try catch в глубине логики без rethrow, значит вы явно что то делаете не красиво или гдето халтурите.
Денис
Действительно работает) Спасибо, пошел наводить оптимизацию)
Yerassyl Maikhanov
мне нужно если есть интернет то получить с сервера
Yerassyl Maikhanov
я при получении заменяю локальные на обновленные
Денис
вам fox подсказал как лучше, там если есть интернет то с маленькой задержкой появятся новые данные с сервера, если нет то останутся только локальные
Денис
есть способ какой нибудь определить какой код нагружает cpu во время фризов?
Денис
потому что выполняется что-то асинхронно когда фризит
???????
Есть не совсем ответ. Если везде натыкать чото на вроде logger.verbose() то жить станет понятнее.
???????
Второй ответ: это может быть работа с json, суйте их в compute()
Олжас Сулеймен
devtools???
Влод
Джсон теперь общепринятый ботлнек в дарте
Влод
Прям как енумы в нативном андроиде
???????
Compute и нет проблемы
Олжас Сулеймен
[
{
"type": "link",
"text": "https://dart-lang.github.io/observatory/get-started.html"
}
]
Денис
я пушу вот такой класс, и после этого у меня фриз
Денис
[
{
"type": "link",
"text": "https://gist.github.com/kidok313/1cf632f33734200f2a1ff30148d01e53"
}
]
Денис
причем уже после пуша
Aleksey
правильно, пусть проблема будет в другом потоке)
???????
Там "бедой" называют не длительный парсинг, он норм по скорости
???????
Имеется ввиду, что разбор влияет на async поток синхронным вызовом
???????
И интерфейс очень заметно откликается на это лагом
???????
Вот изоляты решают эту проблему, а в случае с JSON они прям идеально подходят.
Влод
как не почитаю все скидывают обработку джсона в другой тред или жалуются что он долго парсится я первый раз подумал что там джсонка жирная многократно прилетает, но похоже это универсальные утверждения. даже не глядя можно советовать скидывать джсонку в другой тред
Влод
синхронным вызовом чего?
|