Программирование : Dart & Flutter по-русски
Даниил Левицкий
и твое решение с заранее сделанным классом облегчит тебе жизнь
Timur
Как открыть drawer при свайпе в любой части экрана, а не только скраю слева
Максим
Парни, всем привет. Кто то может подсказать в чем проблема?
Daniil Kolyasnikov
дефолтное значение должно быть константным
Daniil Kolyasnikov
его нельзя вычислять таким образом
Максим
а каким образом? просто только учусь.
Daniil Kolyasnikov
оставь без дефолтного значения переменой to метод, внутри мапы проверяй на null и подставляй текущую дату, если null
Grant
Данные авторизованного пользователя и др бизнес данные надо хранить в BloC стейтах?
Grant
Или в репозиртории как поля класса
Grant
И как их потом дергать?
Даниил Левицкий
В репозитории на который при создании блока ты будешь подписываться и обновлять стейт
IB Akhrorov
Здравствуйте, как показать сразу Loading popup когда открывается новая страница используя bloc или provider
Grant
Вот юзер репозиторий в который сохраняю данные и как теперь в другом репозитории получить токен юзера
Daniil Kolyasnikov
Как ты сериализуешь и десереализуешь токены ?
Grant
toJson/fromJson? Мне нужно в одном репо получить данные с др репо
Даниил Левицкий
Заинжекти один репозиторий в другой и пользуйся
Даниил Левицкий
на мой вкус я бы не делал такой провайд полей
Даниил Левицкий
потому, что по ним нельзя понять, что данные еще не прилетели
Даниил Левицкий
обернул бы хотя бы во фьючи или типа того
Grant
А как мне тогда по правильному получить токен для запроса который храниться в др репо
Даниил Левицкий
Ну пользователь совершает какое-то действие -> в блок падает эвент -> блок дергает интерактор -> интерактор дергает сервис и кладет авторизационные данные в репозиторий Дальше второй репозиторий в случае необходимости дергает первый репозиторий за токеном. Либо! Если нужно, то из первого репозитория делаешь реактивный стрим, на который подписан второй репозиторий, чтобы сразу узнать об изменении юзер токена
Даниил Левицкий
что-то типа BehaviorSubject круто решает такие вопросы
Grant
Спасибо, попробую разобраться
Даниил Левицкий
ну репозитории это синглтоны в какой-нибудь DI-системе и их можно в друг друга класть
Даниил Левицкий
Архитектура этого не запрещает
Grant
А какие нибудь материалы кроме доки по блоку и взаимодействию посоветуете?
Даниил Левицкий
такие вопросы решаются с помощью "Чистая архитектура", в целом даже без разницы какая платформа и язык
Даниил Левицкий
подходы везде одинаковые +- для работы с бизнес-логикой и данными
Grant
Мне именно в сам флаттер затруднительно въехать в билдеры всякие и тд
Дмитрий Мезенцев
При создании списка через ListView у меня показываются мои элементы и + какое-то лишнее пространство, как от него избавиться?
Daniil Kolyasnikov
в память ты складываешь токены ?
Daniil Kolyasnikov
В hive там по ключам ?
Grant
Не, пока локальный стор не сохранял если про это
Daniil Kolyasnikov
Есть подход при котором это состояние проходит через память (hive), а репозитарии инициализируются каждый раз
Daniil Kolyasnikov
Либо сделай синглтон репозитория
Николай
Подскажите пожалуйста, сделал пуши с Firebase Cloud Messaging for Flutter, но на некоторых старых моделях, значок приложения в пуши серый квадрат, как это исправить? Другие приложения нормально же показывает
Николай
с прозрачность это как? там же png, она вроде и так с прозрачностью
Николай
а в фотошопе не подскажешь как?
Danil
Kotlin Multiplatform? Да не знаю, особо не интересовался.
Николай
сами иконки у меня есть, я только не понимаю как прозрачность добавить
Руслан Каюмов
Приветствую народ. Начинаю ковыряться с блоком Не работает, если менять только поле переменной потока, а если пересоздавать ее целиком, то все норм отрабатывает, виджеты обновляются Может есть какой-то метод, который принудительно можно вызвать для обновления виджетов?
Николай
Спасибо, попробую, и еще подскажи, нет звука прибытия пуша тоже на некоторых телефонах, это как лечится?
Kit Khilobok
_appData= _appData.copyWith(currLang:'ru'); Попробуйте так
Руслан Каюмов
Попробую, спасиб
Sergey Hottabych
Значит, надо в этом AppInfo, где у меня сохранена локаль, обновлять её. А это надо как-то отлавливать событие системной смены локали.
Han
Привет народ. У меня необычный вопрос: Можно ли запустить телеграмм бота на флаттере, или транслировать как нибудь?
4??uzhoy .
[
{
"type": "link",
"text": "https://pub.dev/packages/teledart"
}
]
Han
Я думал что эта либа для разработки самого бота на Дарте
Andreu
так а в чем проблемы?
4??uzhoy .
[
"не знаю что именно тебе надо, я просто баловался, бот транслировал в канал ошибки из блока \n",
{
"type": "code",
"text": " void onError(Bloc bloc, Object error, StackTrace stacktrace) {\n super.onError(bloc, error, stacktrace);\n String _error = \"@-ERROR in ${bloc.runtimeType}-@\\n$space ERROR:$error\\n$stacktrace\";\n _teleDartManager.sendToTelegram(_error);\n }"
},
""
]
Andreu
гениально, тоже добавлю)
Han
Мне не нужно разрабатывать бота, а нужно чтоб общение с ботом происходило в флаттер приложении
4??uzhoy .
[
{
"type": "code",
"text": "static String _telegramBotApiKey =\n '*****';\n static int _chatGroupId=-****;\n\n"
},
"нужен токен бота и айди группы куда добавишь"
]
4??uzhoy .
[
"ну можно и так) \n\n",
{
"type": "code",
"text": "teleDart.onCommand('about_me').listen(((message) => teleDart.replyMessage(\n message,\n \n '${message.chat.toJson().toString()}'\n 'id: ${message.chat.id}'\n '\\nchat permissions: ${message.chat.permissions.toString()}')));\n\nв"
},
" чате кидаешь команду он ее слушает и отвечает как скажешь, короче почитай по либе"
]
Han
Хорошо, спасибо за ответ
Daniil Kolyasnikov
ребят , как в новой панели эту плашку убрать ( не могу найти форму для загрузки документов)
Kit Khilobok
флаттер это ui фреймворк, так что вопрос сам по себе странный)
Kit Khilobok
Бот это логика, если она на дарте написана, то эту логику можно использовать в приложении
Геннадий
Всем привет, нубский вопрос api['organization']['items']['inn'] - почему я так не могу получить вложенность? ) И как ее тогда получить? Произошло исключение. NoSuchMethodError (NoSuchMethodError: The method '[]' was called on null. Receiver: null Tried calling: []("items")) В js я проверки к примеру делаю api['organization'] && api['organization']['items'] && api['organization']['items']['inn'] А как тут с этим? )
Daniil Kolyasnikov
== null проверяй
Геннадий
Все равно чет не получается, я хочу распарсить json Map api = await json.decode(response.body); print(api);
Получил проверил, все гуд, но когда я пытаюсь достучаться до вложенности,ругается =(
api['organization']['items']
Геннадий
Да вот выше, чёт нул не нул, пойду перепроверю, может не туда стучусь
Геннадий
Мой косяк,извините)Пропустил вложенность ...
Mikl Night
[
"Всем салют) я флаттер-новичёк, а меня тут напрягли сделать интерактивный туториал в приложении..\nВ какую сторону копать, делать прям на боевых экранах ",
{
"type": "code",
"text": "Offstage"
},
" с гайдом, по оптимизации это не косяк?)"
]
Prunkles
BlocProvider должен создаваться виджетом, который его использует, или родителем этого виджета, который знать не знает о том, что ему нужно для работы?
Anatoliy Razumov
[
{
"type": "link",
"text": "https://pub.dev/packages/tutorial_coach_mark"
}
]
Mikl Night
спасибо! это то что нужно)
Anatoliy Razumov
Пожалуйста
Makhmud Ushamiev
Создается на том уровне дерева виджетов, откуда далее нужно взаимодействие с ним.
EcsFlash-
ребят, может быть максимально тупой вопрос
Даниил Левицкий
При публикации раньше была плашка, хотя у тебя выглядит так, как будто ты уже отправил и они не подтвердились
Пашка
тут большинство таких)
Dart Flutter
Парни привет. Кто блок использует как там можно отловить ошибку 401 пришедшую из Апи?
Roman Vasiliev
Provider взять или унаследовать InheritedWidget по подобной схеме
Andreu
try/catch и DioError
Dart Flutter
dio не использую http пакет flutter
Andreu
я думаю принцип тот же, только названия ошибки не подскажу
Andreu
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/60648984/handling-exception-http-request-flutter"
},
" можно еще подобное. Но в целом рекомендую dio, он все равно обертка над http, проблем с переходом на него не должно быть"
]
Danil
Как парсить данные с сайта? С помощью какой библиотеки это лучше делать?
EcsFlash-
мб я недогуглил, но все же
EcsFlash-
у меня есть табы
EcsFlash-
и на одном из них юзается obx, но он не обновляет виджет до тех пор пока я не обновлю сам таб пейдж
EcsFlash-
есть вариант как то истправить это?
EcsFlash-
чтоб виджет сразу менялся
EcsFlash-
Первый- ввожу число и сабмитчу, второй- обновил страницу с помощью переключения туда-обратно
Prunkles
Как можно заставить Provider пересоздать зависимость?
Alexander K
[
"Сделать самый верхний стейт как with WidgetsBindingObserver, повесить WidgetsBinding.instance.addObserver/removeObserver и переопределить didChangeLocales? ",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/widgets/WidgetsBindingObserver/didChangeLocales.html"
},
"\nДолжно сработать, вроде"
]
EcsFlash-
Кто нибуть знает, по какой причине Obx() может не обновляться?
EcsFlash-
Строка, которую я подаю в Text(), обернутый в Obx, меняется
EcsFlash-
Строку беру из TextField'a
Sergey Hottabych
Спасибо, не знал про этот колбэк.
Alexander K
Удачно я спросил про проект, все остались в плюсе и узнали что-то новое)
admin
Всем привет! Кто-нибудь сталкивался с кастомизацией ListTile через _verticalTile? Необходимо отобразить Image на всю ширину экрана, а под ним написать текст. Т.е. Image необходим не слева, а сверху. В виджете ListTile подобное невозможно. Кажется для этого необходимо собирать контейнеры, а из контейнеров собирать ListTile. Ссылку на пример приму с благодарностью!
Sergey Hottabych
ProxyProvider Он пересоздает инстанс класса, когда меняется инстанс, на который он опирается.
Prunkles
Да, я уже нагуглил его. Но вот только такая каша с ним получается
Roman Vasiliev
[
{
"type": "mention",
"text": "@bunopus"
}
]
Noob Noobskiy
Вечер добрый. Извините за столь нубский вопрос, но что я не так делаю? Как правильно сделать? Вот несколько примеров как я делал??
Alexandr Drobyshev
вы из функции вызываете себя же
Alexandr Drobyshev
это бесконечная рекурсия
Denis
String stringify1(int x, int y) { return stringify(x, y).toString();}
Serge Shkurko
всем привет, есть аналогичный чат по разработке андйрод? помню сюда кидали когда-то
Noob Noobskiy
Пробовал, тоже ошибка
Denis
1. stringify - не помню чтоб такая была функция по дефолту 2. если же это ту которую сделал ты, то ты вызываешь ее внутри этой же функции и получаешь вечный вызов 3. эта запись вообще не корректа
Sergey Hottabych
А что значит концепция "Sound Null Safety"? Как понять "Sound"?
Noob Noobskiy
[
{
"type": "mention",
"text": "@Cr0manty"
},
" посмотрите пожалуйста тут задание ",
{
"type": "link",
"text": "https://dart.dev/codelabs/dart-cheatsheet"
},
""
]
Noob Noobskiy
в самом начале String interpolation
vasilich
[
{
"type": "link",
"text": "https://dart.dev/null-safety/unsound-null-safety#sound-and-unsound-null-safety"
}
]
Sergey Hottabych
Как это вообще по-русски сказать?
Alexandr Drobyshev
String stringify(int x, int y) { return "$x $y";} stringify(1,2);
Denis
String stringify(int x, int y) { return '$x $y'; } выглядеть должно вот так
Sergey Hottabych
вот гугл подсказывает
vasilich
Умница этот ваш гугель
Noob Noobskiy
может пример на сайте dart сломан?
Noob Noobskiy
Не получилось у Вас?
Noob Noobskiy
Этот пример тоже не подошел кстати
Alexandr Drobyshev
а у меня подошел странно
Шахзод Джураев
[
{
"type": "mention",
"text": "@android_ru"
}
]
Noob Noobskiy
Во, Денис, сработал return "$x $y"; XD Спасибо
Anton Kowalski
Мне нужно развернуть сетевой сервер поддерживающий http-протокол, и хранение баз данных, что посоветуете?
Данчик
Ребята, есть на дарт библиотека с которой можно написать игру на десктоп?
Пашка
юнити можно во флатер воткнуть вроде
Alexandr Drobyshev
заче мтогда флаттер если оно уже на юнити? ??
Kit Khilobok
[
"Есть куча либ\nВот одна из них\n",
{
"type": "link",
"text": "https://github.com/flame-engine/flame"
},
""
]
Kit Khilobok
Есть также физические движки
Kit Khilobok
Ну, что есть) В любом случае, по уровню всё это будет уступать тому же юнити
Alexandr Drobyshev
тут еще не понятно на скок они именно на десктоп поддерживаются)
Kit Khilobok
Потому что зачем использовать самокат, для того, чтобы кататься на льду, когда есть коньки
Rahimjon Omonqulov
Помогите пожалуйста не могу установить Flutter на андроид студию
Danil
Попробуй добавить "...\bin" в путь
Makhmud Ushamiev
flutter doctor в терминале, он докачает необходимые файлы
EcsFlash-
Кто гетх юзает, хелпаните пж. Obx не обновляет виджет, завёрнутый в него(ее) хотя строка меняется
Андрей Рудин
в Obx есть элемент, который меняется в Компоненте?
EcsFlash-
Text("${controller.mystring}")
EcsFlash-
И mystring изменяется по нажатию кнопки
EcsFlash-
Принтил значения
Андрей Рудин
меняется просто строка? не класс?
Андрей Рудин
что за объект в контроллере?
EcsFlash-
В контроллере: var mystring = "".obs;
Kit Khilobok
Переменные obx это стримы, значит надо брять value те последнее значение
Kit Khilobok
И не var, а Rx
EcsFlash-
Если не секрет, в чем разница, в доках говорилось что самый предпочтительный метод это добавить .obs и все. У них конечно было вот так: final mystring = "some string".obs;
Kit Khilobok
Хрен знает, какой тип оно возьёт
Kit Khilobok
[
"А в случае с гетом, я бы не доверял, ибо гет многое делает ",
{
"type": "strikethrough",
"text": "через ж..."
},
" своими способами"
]
EcsFlash-
У меня есть TextField, по нажатию на кнопку я беру значение из TextField, присваиваю это значение моей obs переменной, и эта самая переменная юзается в тексте
EcsFlash-
Обернутом в обх
Kit Khilobok
Всё ещё не вижу проблемы
Kit Khilobok
Ну и да, всё это должно быть в гетбилдере, на всякий уточню
EcsFlash-
Тут самое смешное то, что обх обновляет текст, но при том условии, что я выйду с экрана и зайду обратно
Андрей Рудин
код надо видеть, проблема в коде.
Kit Khilobok
Не обновяет значит
Kit Khilobok
Я уже ж написал
Kit Khilobok
Те Rx text = ''.obs;
onChangeText(String text){ this.text.val=text; }
Kit Khilobok
И соотв Obx(()=>Text(text.value))
EcsFlash-
Примерно так оно и выглядит
EcsFlash-
А щас скину как работает
Anton
а у тебя клас обернут вокруг контролера ?
Anton
немного не так написал
EcsFlash-
Может из-за таббар'а
Anton
у тебя class extends conroller ?
EcsFlash-
Вы про Get.put?
EcsFlash-
Если про него, то да
Anton
ну кинь код с гиста
EcsFlash-
Контроллер extends GetxController
EcsFlash-
Щас скину, только не ругайте, я перекопатил все что мог, пытался и так и сяк сделать
EcsFlash-
[
{
"type": "link",
"text": "https://github.com/EcsFlash/FlutterApp/blob/main/sincos.dart"
}
]
EcsFlash-
Та блок мне кажется сложным и страшным как темный лес
Пашка
зато будешь хвастаться
EcsFlash-
Было бы перед кем...
Пашка
освоишь, добавлю к гуру в чат
Benjamin Official
Друзья всем доброго времени суток! Посоветуйте материал, чтобы влиться в разработку на flutter
EcsFlash-
Так в доке же писали типо сделал гет.пут и обернул в стейтлесс, дабы ОЗУ сэкономить
Anton
а зачем у тебя тут final?
EcsFlash-
Так в примере было)
Пашка
имутабельность потому что)
EcsFlash-
Тут уже чисто списал так сказать
EcsFlash-
Увидел такой способ навигации
EcsFlash-
И ctrl+c ctrl+v
Андрей Рудин
Bloc придумал Фокс?
Anton
вот нормальный способ навигации
EcsFlash-
Это мешает как то? Оно мне все запороло?
EcsFlash-
Просто вот это все как то странно работает
Пашка
а зачем капс у сплеша?
Anton
чтоб умные люди спрашивали
|