Программирование : Dart & Flutter по-русски
Evgenii Elchev
в данном примере разницы принципиальной не будет
Илья Максименко
кстати возможно потому что не отменял подписки
Илья Максименко
на блок который отдавал стейт с connectivity
Илья Максименко
и подписка собственно на платформу
Alexander PhatoM
Если бы у impl было какое нить поле публичное, из а ты бы не смог его дергать (но это нарушает инкапсуляцию), лучше использовать вариант с b, чтобы не было зависимостей жёстких от классов
Юрий Ионцев
[
"Добрый день, пожалуйста подскажите новичку, т.е. мне\nКак правильно прочитать вот этот участок кода?\n\n\n List _messages =\n ",
{
"type": "link",
"text": "collectionDataFromJson.map"
},
"((json) => Message.fromJson(json)).toList();\n\nКак я это понимаю - я беру каждый элемент collectionDataFromJson по средством переменной json, и передаю ее в конструктор и так далее пока не пройду всю коллекцию, а далее я весь вывод map преобразовываю в список и получаю на выходе List, верно?"
]
Oleg Moiseev
в чем отличие билда релиза от дебага? в дебаге на планшете всё норм работает, запускаю flutter build apk и на том же планшете не работает приложуха ((
Алексей Александрович
Белый экран?
Oleg Moiseev
приложуха запустилась, думаю что то при обращении к api
Oleg Pchelkin
доступ к инету пропиши в релизном андроид манифесте
Oleg Moiseev
тут? \android\app\src\main\AndroidManifest.xml
Oleg Moiseev
помогло, спс
Oleg Moiseev
ух как в релизе то всё летает, так непривычно
Алексей Александрович
даа, это кайф
Oleg Moiseev
есть какие-нибудь полезные статьи про bloc и архетектуру приложения? Погуглил немного, восновном один и тот же пример все разжовывают, посмотрел несколько популярных исходников на гит, так вобще bloc никто не использовал.
vasilich
[
"Смотри ресокодера плейлист про блок.\nСтатьи про блок и статьи про архитектуру это два разных человека)\n\nБлок это стейт менеджмент и его по ошибке именуют архитектурой.\n\nПосле тех видосов - го практику практиковать.\n\nВот примеры\n\n",
{
"type": "link",
"text": "https://github.com/artflutter/graphql_flutter_bloc"
},
""
]
Илья Максименко
Да, немного раздражает когда архитектурой именуют всё что попало
Evgenii Elchev
ну вообще все в приложении в каком то роде архитектура)
vasilich
Так было на флаттер подкасте) Пригласили гугловца и задвинули ему вопрос про архитектуру в контексте блока и провайдера. Он такой «эээээмммм, это же стейт менеджмент»
Семён undefined
можно ли добиться эффекта TextOverflow.fade, но для скролла? без градиентов, так как нужна работа с картинками
Maksim Zdanchuk
Пытаюсь забилдить на битрайзе проект. Выдает такую ошибку. Сталкивался ли кто с этим?
Вадим Резниченко
здравствуйте. кто нибудь пробовал дебажить через вай фай?
Oleg Pchelkin
Кажется у тебя зафорсен путь к Info.plist. Нужно прописать от папки проекта путь, а не абсолютный
RX
Всем привет! Посоветуйте источники фонов(фото и тд) для приложения?
Maksim Zdanchuk
не подскажешь, прописать где?
Maksim Zdanchuk
в воркфлоу?
Oleg Pchelkin
В настройках ios проекта Runner
Maksim Zdanchuk
тут что ли?
Moby Polo
[
"Утверждение для холивара?) блок это паттерн, который реализует в тч стейт менеджера, не верите мне, посмотрите автора ",
{
"type": "link",
"text": "https://www.youtube.com/watch?v=PLHln7wHgPE"
},
""
]
Вадим Резниченко
плагин недоступен для андроид студии под линух
Andreu
На андроиде без проблем, у iOS частенько отваливается соединение
Andreu
Так а последством команд adb никто не запрещает)
Вадим Резниченко
точно. спасибо)
Вадим Резниченко
получилось, но не через студию, а через интеллиджи идею
Andreu
А там командная строка другая?)
Вадим Резниченко
а там плагин взлетает, а мне после рабочего дня лень в командную строку лезть)
Вадим Резниченко
через строку я запустил дебаг по вай фай, но не понял, как из студии к нему подключиться
Maksim Zdanchuk
у меня серьезный вопрос: Я вручную поменял во всех таргетах версию на 9.0. Как только закрываю runner в xcode и пытаюсь запустить аппу из андроид студии, то она сама опять возвращает все версии к 8.0. Кто знает, как это фиксится?
Andreu
Разве не появилось после подключения по ip устройство в списк?
Вадим Резниченко
не а. может я что то не так делаю
Вадим Резниченко
nmap говорит, что порт 5555 открыт. студия говорит, что пошел бы я куда подальше
Andreu
мне уже сложно вспомнить этот процесс, я по проводу уже постоянно. Но ты предварительно полюключил по проводу и написал adb tcpip 5555?
Вадим Резниченко
да. и порт 5555 на телефоне открыт, я проверяю это постоянно. но андроид студио через adb не хочет коннектиться
Andreu
А потом adb connect 192.xxx.x.x
Andreu
Странно, но это андроид, там всякое бывает)
Вадим Резниченко
очень странно, учитывая, что через идею все работает прекрасно
Andreu
Кстати раз это линукс, у вас в студии и вскоде один и тот же терминал? У меня были приколы такие на маке, когда студия под bash, а вскод zsh)
Вадим Резниченко
я не знаю что на винде, но на линухе студия вообще багованная и иногда исчезает из окон. при альт табе видно, а в списке запущенных программ ее нет.
Вадим Резниченко
не знаю, я сразу после установки системы ставлю zsh, делаю chsh и везде zsh
Вадим Резниченко
во всех терминалах и во всех ide
Вадим Резниченко
через командную строку в студии все взлетело. но это такое себе как по мне. хоть алиасы прописывай
Andreu
Ну вот) а про элиасы да, хороший вариант
Антон
Подскажите пожалуйста, как объявить это значение в коде? Мне необходимо, что бы оно было постоянным, например "vasya"
Kit Khilobok
Константу объявить?
Антон
Вот так сделал. Помогло.
Вадим Резниченко
[
"вдруг кому то пригодится. я нашел гуишный плагин для студии на линухе, который работает даже без ее перезагрузки \nвот страничка плагина ",
{
"type": "link",
"text": "https://plugins.jetbrains.com/plugin/14969-adb-wi-fi"
},
"\nв маркетплейсе студии он есть, разработчик - Yury Polek"
]
MMM Stefan
братцы а както можно по хитрому укоротить эту конструкцыю if (trackingValue) { _onStart(); } else { onStop(); }
MMM Stefan
если тру то вызыв такой то функции иначе другая
Ivan
trackingValue ? _onStart() : onStop()
Andreu
Мне нравится, что стартовая функция приватная, а стоп нет))
Kit Khilobok
А зачем? Это самый читабельный вариант
MMM Stefan
ага, спс, за него забыл както
Alexey Z
val? Start():Stop();
Илья Максименко
Почему просто в одну строку не записать
Илья Максименко
Насколько знаю линтер ругается только если не помещается
Alexey Z
[
{
"type": "link",
"text": "https://github.com/MadBrains/Tinkoff-Acquiring-SDK-Flutter"
}
]
Edgar
Ребят, это норма, что с сайта написанного на флаттер, есть неудобства с выделением текста?
Даниил Левицкий
Там есть специальные виджеты из которых можно выделять текст, а ещё читал, что к релизу поправят
ilsur
Вечер добрый, подскажите, при маршрутизации по имени, когда мы возвращаемся обратно, то все переменные, которые у нас были, снова исчезают? То есть я нажимаю на кнопку, перехожу по имени на другой скрин, выполняю там функцию Ф, которая возвращает дабл, а затем возвращаюсь назад, функция Ф исчезает?
Rahat Saparov
Добрый день. Как можно конвертировать в объект подо класса? [ { "id": 1, "name": "Автосервис", "description": null }, { "id": 2, "name": "Государство", "description": null } ]
Rahat Saparov
пишет что list ' is not a subtype of type 'map
Evgenii Elchev
у тебя json начинается с [ и заканчивается ] это что значит?
Rahat Saparov
API returns JSON array not json object so that is List not Map.
Константин Буланов
[
{
"type": "pre",
"text": "import 'dart:convert';\n\nList welcomeFromJson(String str) => List.from(json.decode(str).map((x) => Welcome.fromJson(x)));\n\nString welcomeToJson(List data) => json.encode(List.from(data.map((x) => x.toJson())));\n\nclass Welcome {\n Welcome({\n this.id,\n this.name,\n this.description,\n });\n\n int id;\n String name;\n dynamic description;\n\n factory Welcome.fromJson(Map json) => Welcome(\n id: json[\"id\"],\n name: json[\"name\"],\n description: json[\"description\"],\n );\n\n Map toJson() => {\n \"id\": id,\n \"name\": name,\n \"description\": description,\n };\n}",
"language": ""
},
"\nА на будущее ",
{
"type": "link",
"text": "https://app.quicktype.io/"
},
""
]
Rahat Saparov
спасибо попробую
Evgenii Elchev
ты только помог человеку не думать)
Константин Буланов
Извините. Иногда нужно вот прям сейчас решить задачу и времени нет подумать. Может потом придет осознание.
Oleg Moiseev
Для чего перед fromJson нужен factory?
Oleg Moiseev
Что такое factory знаю. Для чего он нужен в fromJson.
Олжас Сулеймен
так как он возвращает другое занчение, то есть не сам инициализируется
Олжас Сулеймен
откуда кусок? ... может ... не может ... ))
Astraport
Так это внешний экваеринг. Не знаю как в Google Play, но в AppStore такое точно не пропустят. Да и вообще юзерам привычнее и безопаснее платить через встроенные магазины. Да 30% это очень много, но конверт в оплаты в разы больше.
Дмитрий Щербаков
Смотря для чего , для физических товаров можно и там и там юзать внешний. Сомневаюсь что если у тебя интернет магазин ты будешь отдавать 30% стору ради конверсии ??
Astraport
Мне для внутренних покупок типа подписок на контент, разблокировка полного функционала, монетки в играх.
Evgenii Elchev
не все эти торгуют
Дмитрий Щербаков
[
"этот разве не подходит? ",
{
"type": "link",
"text": "https://pub.dev/packages/flutter_inapp_purchase"
},
""
]
Evgenii Elchev
и что, если ты торгуешь например штанами, то встроенные покупки не подойдут, нужен банковский эквайринг
Astraport
Вполне может и походит. Пока не юзал. Я спрашивал у сообщества о предпочтениях, об имеющемся опыте.
Evgenii Elchev
я родной пробовал, на ios он не работает
Evgenii Elchev
пришлось на нативе писаь
Дмитрий Щербаков
ну есть же ffi
Дмитрий Щербаков
можно юзать любую либу с натива
Evgenii Elchev
ffi позволяет вызывать напрмую стандартный ios фреймворк?
Evgenii Elchev
я просто использовал канал
Astraport
Ну вот это же затык конкретный. Была бы платная либа, можно было бы ожидать, что разраб плагина поддерживает его, выпускает мануалы, инструкции, саппортит. Во всех более-менее популярных мобильных движках так было.
Evgenii Elchev
ну вообще от команды флаттера ожидаешь что плагин для покупок который они пишут, работает
Evgenii Elchev
есть платный от реньювал кэт
Evgenii Elchev
там даже не не просто покупки, там прямо сервис идет, с аналитикой, бекендом и прочим
Evgenii Elchev
но мне этот вариант не подошел, даже не по стольку по скольку платный, а потому что у нас уже был бекенд и прочее и надо было завязываться на него
Astraport
Так он тоже со сторонним экваерингом, нужно тупо чтобы работал с внутренними платежками сторов.
Evgenii Elchev
нет, он как раз инапы обрабатывает
Astraport
Тогда отлично, я пока с ним не разбирался. Спасибо.
Astraport
Ну и шэринг с социалками. Это же очень важно. Если нормально всё организовать, то аппа получит в 10 раз больше трафа с соц. сетей, чем с органики сторов.
Astraport
Но самому изучать АПИшки ФБ и т. д. это же ад.
Astraport
[
{
"type": "link",
"text": "https://www.revenuecat.com/pricing"
},
"\nЯ правильно понимаю, что если месячный оборот по платежам в выручке будет менее $10k, то можно не платить?"
]
Astraport
Если так, то по сути бесплатное решение))
Astraport
Не нахожу ничего о процентах.
Мirshod
Привет. Эти папки красные. Так нужно быть?
Temurxon
всем привет,кто знает на данный момент гугл снимает 30% прибыли с приложений в google play или меньше ?
Astraport
Все по прежнему
Yerassyl Maikhanov
Это норм. Но в следующий раз лучше screenshot
Serhii
Доброе утро. Если я делаю навигацию с боттомаппбаром, то я страницы эти меняю через PageView в body? Как мне тогда с них переходить на какие-то еще страницы, но что бы боттом аппбар остался на месте. Каждый раз прописывать его в скафолде новой страницы?
Урусай
[
"Утро. Вчера делал такое поведение. Грубый код: ",
{
"type": "link",
"text": "https://gist.github.com/urusai88/e9850e96e75bd497c10bcb14e7eb9ca2"
},
""
]
Семён undefined
ты можешь просто сделать свой Scaffold и менять лишь только body
Семён undefined
отдельным виджетом вынести
Maksim Zdanchuk
доброе утро! При запуске на битрайзе вылазит вот такая вот ошибка. При билде в студии все нормально. Кто знает как это фиксить?
Maksim Zdanchuk
в гугле вообще не нашел ничего по этому поводу
Serge Shkurko
Ого 17,5 минут Где-то должен лежать полный лог с ошибкой, попробуй поискать
Gregory
Привет, пожскажите пожалуйста кто имел проблему с логином через фейсбук There is an error logging you into application. Try again later Возникает только если апка установлена. При этом все хеши что в плеймаркете что на дебаг (сгенерирован с помощью терминала) выставлены
Gregory
Буду очень благодарен если кто может знает другую причину
Maksim Zdanchuk
тут много warning'ов , наверное поэтому так долго.
Maksim Zdanchuk
[
"мб это даст полную картину. * Where:\nBuild file '/usr/local/flutter/.pub-cache/hosted/",
{
"type": "link",
"text": "pub.dartlang.org/app_settings-2.0.0/android/build.gradle"
},
"' line: 24\n\n* What went wrong:\nA problem occurred evaluating root project 'app_settings'.\n> Failed to apply plugin [id 'com.android.library']\n > Minimum supported Gradle version is 5.4.1. Current version is 4.6. If using the gradle wrapper, try editing the distributionUrl in /usr/local/flutter/.pub-cache/hosted/",
{
"type": "link",
"text": "pub.dartlang.org/app_settings-2.0.0/android/gradle/wrapper/gradle-wrapper.properties"
},
" to ",
{
"type": "link",
"text": "gradle-5.4.1-all.zip"
},
"\n\n* Try:\nRun with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.\n\n* Get more help at ",
{
"type": "link",
"text": "https://help.gradle.org"
},
""
]
Serge Shkurko
да Minimum supported Gradle version is 5.4.1. Current version is 4.6
Serge Shkurko
попробуй в android/build.gradle и в android/app/build.gradle обновить gradle
Maksim Zdanchuk
если не сложно рассказать, то как это делается?)
Дмитрий Мезенцев
Есть стек, в нем контейнер с элементом, как расположить ещё один контейнер относительно середины первого?
Serge Shkurko
вот тут поставь нужную версию
Serge Shkurko
5.4.1 в твоем случае
Crystal
У меня была схожая проблема на ubuntu, перепробывал почти все решения с стаковерфлоу и тд, потерял целый день. Помогло снести флаттер, андроид студио. И поставить заново
Maksim Zdanchuk
спасибо, попробую сейчас
Дмитрий Мезенцев
Как наложить один элемент поверх другого по середине?
Maksim Zdanchuk
у меня тут 6.5 стоит. Менять на 5.4.1?
Roman Cinis
Stack + его параметр align
Serge Shkurko
[
"посмотри, может есть новая версия ",
{
"type": "text_link",
"text": "пакета",
"href": "http://pub.dartlang.org/app_settings-2.0.0/android/gradle/wrapper/gradle-wrapper.properties"
},
" ",
{
"type": "text_link",
"text": "app_settings",
"href": "http://pub.dartlang.org/app_settings-2.0.0/android/gradle/wrapper/gradle-wrapper.properties"
},
""
]
Serge Shkurko
если да попробуй до послей обновить
Maksim Zdanchuk
окей, сейчас гляну
Maksim Zdanchuk
а кстати, разве после pub upgrate она сама не обновляется до последней?
Maksim Zdanchuk
так, ну уже имеется версия 4.0.4
Maksim Zdanchuk
у меня 2.0.0
Serge Shkurko
не, обновляется только path от версии если она указана с таким символом ^ т.е. если версия например ^2.0.0 выходили обновления 2.0.1 и 3.0.0 при pub upgrade локально версия обновится до 2.0.1
Serge Shkurko
так во всех нормальных пакетных менеджерах, можешь почитать о semver
Maksim Zdanchuk
сейчас поставлю в .yaml 4.0.4
Vladislav Zakharchenko
привет всем кто-нибудь знает, можно ли сделать тень от изображения, которая окрашивается цветами самого изображения? как на скрине
Егор Шепелев
Как вариант - подкладывать еще одно изображение и блюрить его, но это будет ресурсоемко
Alexander PhatoM
А почему не вставить это все как одно изображение?
Vyacheslav
[
"Парни, вот такой каст \n",
{
"type": "pre",
"text": "price: json['price'] as double,\n",
"language": ""
},
" из целого числа (например, 12) ошибку выдает, что int не double. Как поправить, что-то заплыл"
]
vasilich
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/13167496/how-do-i-parse-a-string-into-a-number-with-dart"
}
]
Astraport
Проще в ФШсразу наложить тень
Astraport
[
"Или так, но имхо это ресурсоемко ",
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/30109"
},
""
]
Vyacheslav
[
"сделал так ",
{
"type": "pre",
"text": "price: json['price'].toDouble(),",
"language": ""
},
""
]
vasilich
А если прайс налл?)
vasilich
[
{
"type": "link",
"text": "https://api.flutter.dev/flutter/dart-core/double/tryParse.html"
}
]
Vyacheslav
[
"тогда так \n",
{
"type": "pre",
"text": "price: json['price'] != null ? json['price'].toDouble() : 0.0",
"language": ""
},
""
]
DmitryL
price: json['price'] * 1.0
Виталий
Если будет налл, то вылетит и в этом и в следующем решении ошибка, что нельзя производить действия с наллом
Виталий
А все, подредактировали
Виталий
В первом случае сработает
Виталий
А тут вылетит ошибка что нет операции умножения налла
Serge Shkurko
price: json['price']?.toDouble() ?? 0.0
Vyacheslav
кстати да, лаконично, и работает с null Спасибо!
Виталий
double.tryParse(json[‘price’]) ?? 0.0 ?
Andreu
lkbyyj b ytrhfcbdj
Vyacheslav
и это тоже ))) ??
Andreu
+ tryParse кажется выдает эксепшен, а не null
Vladislav Zakharchenko
Там могут быть разные изображения, из сети берутся
Vyacheslav
я вот это решение оставил, я его понимаю
Виталий
tryParse возвращает null
Виталий
double.parse - эксепшен
Виталий
[
{
"type": "link",
"text": "https://api.flutter.dev/flutter/dart-core/double/tryParse.html"
}
]
Andreu
ага, я уже тоже в доку слазил
Alexander PhatoM
Ну по-моему не вариант на клиенте такие изображения выстраивать
Alexander PhatoM
Серв должен таким заниматся
Виталий
А, там нюанс что source тоже должен быть не налл
Evgenii Elchev
[
"Я написал себе вот такую вот штуку\n",
{
"type": "pre",
"text": "T cast (dynamic a) {\n return a is T ? a : null;\n}",
"language": ""
},
"\n\nи юзаю везде, например при париснге json\n\nObject(\n count: cast(jsonMap[\"count\"]),\n)"
]
Виталий
double.tryParse(json[‘price’] ?? ‘’) ?? 0.0
Vyacheslav
оставил себе))
Evgenii Elchev
работает с любыи типом, с null, и еще и тип указывать не надо, сама выводит
Maksim Zdanchuk
помогло, спасибо огромное!
Serge Shkurko
Можно же extension написать для базовых типов
Evgenii Elchev
try parse это все таки, что бы получить дабл из строки например, а если ты жсон парсишь, то у тебя и так там дабл)
Evgenii Elchev
можно, я так и сделал вначале, но потом оказалось что idea нихрена не умеет работать с этими extension и я переписал на функцию)
Виталий
Ну тоже верно, не универсально
Serge Shkurko
Воу, до сих пор не поддерживает?
Astraport
[Konstantin Kokorin] Изучаем Dart [Udemy](2020) Как вам курс? Никто не видел в свободном доступе?
DmitryL
Безусловно, но вопрос был как быть с инт-ом. Я поступаю так. Если возможен нулл, то надо проверить, безусловно
Evgenii Elchev
а разве из json цифра 1 не может автоматом распарится как double?
Evgenii Elchev
json же не имеет различий между намберами
DmitryL
Может, если там будет не 1, а 1.0 А так видит int - возвращает int
|