Программирование : Dart & Flutter по-русски
Dmitry Bannikov
Намного проще перенять практику , чем набивать себе шишки
Yakov K.
Неа :) ValueListenable – классический сигнал. Смесь Stepper Behavior и Event – все та же реактивщина
Dmitry Bannikov
Сигнал знаю что такое
Yakov K.
[
"Держи – ",
{
"type": "link",
"text": "https://pub.dev/packages/value_extensions"
},
", Readme + example :)"
]
Dmitry Bannikov
В GodotEngine сигналы как основной менеджер между виджетами
Daniil Kolyasnikov
Разделение на view -view model -model ни о чем не говорит ?
Daniil Kolyasnikov
Нино. Там сцены )
Yakov K.
Так да, frp оно из анимаций/игор
Dmitry Bannikov
Сцены через сигналы общаются
Daniil Kolyasnikov
Типа подъебал ?
Dmitry Bannikov
Они не слушают друга друга , а ждут сигнал
Yakov K.
А где вы в ValueListenable увидели VM? Его можно использовать как Binding Layer, но в этом нет смысла/это не обязательно
Dmitry Bannikov
Оптимизация , вообще это их фича отличие от Юнити
Dmitry Bannikov
provider тоже signal
Dmitry Bannikov
а что его каждый тик проверяют
Daniil Kolyasnikov
Всмысле где? View отделён. Model отделён. Логику ты пишешь когда экстендишь ValueNotifier
Dmitry Bannikov
Сигнал это когда сигнал всех разбудил , для работы , без сигнала спят .
Dmitry Bannikov
А слушатель сам следит за перемоной .
Yakov K.
Вот сейчас у нас диалог сместился в область, за которую я не люблю MVVM – никто не знает что такое Model :)) Слишком расплывчатое назначение и все имеют свои представления
Daniil Kolyasnikov
Это данные для View как и написано в определении mvvm
Yakov K.
Или данные и функциональность? Или только функциональность, а данные в БД? Или функциональность в виде инструкций по получению данных?
Yakov K.
То, что ValueListenable предоставляет интерфейс для двунаправленных байндингов не делает его автоматом VM :)
Daniil Kolyasnikov
Только данные, только то что отображается во view
Daniil Kolyasnikov
Это и называется mvvm
Yakov K.
Смотрите, у нас уже разные определения :) Model это не только данные, но и набор доменной функциональности
Yakov K.
И даже это жесть какое расплывчатое определение :)
Daniil Kolyasnikov
Mvvm. Мы говорим в рамках реализации mvvm. Вы ошиблись.
Yakov K.
[
"Да-да – мы говорим о нем :) Смотрите – ",
{
"type": "link",
"text": "https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel"
},
""
]
Yakov K.
"Business Logic and Data"
Yakov K.
По вашему определению тогда доменная функциональность смещается в VM, хотя там на деле презентационная функциональность
MiT
Не хрень. Model это чистые данные. VM и обновляет эти данные
Yakov K.
Ну, вот. Спорим с Википедией :))
MiT
С человеком который работал с MVVM ;)
Yakov K.
Таки я тоже работал с MVVM и написал на нем не одно приложение ;)
Yakov K.
В SwiftUI из которого я пришел MVVM это дефолтная архитектура :)
MiT
Твое MVVM не понимать мое MVVM ;)
Yakov K.
А мое MVVM не понимать твое
Yakov K.
собсна, о чем и речь
Daniil Kolyasnikov
Ну вот тебе пришёл Json с персональными данными , ты ее распарсил и сделал из неё жирную модель с методами. Ты же не будешь ее пихать в valueNotifier
Yakov K.
Не надо из DTO делать модель с методами :) Нарушаете S из SOLID-с :))
Daniil Kolyasnikov
Это уже не дто. Ты дто превратил в модель с бизнес логикой
Daniil Kolyasnikov
Да даже если дто. Ты же дто не будешь пихать в valueNotifier
Yakov K.
Не буду :) Я буду пихать в ValueNotifier обсервабл величину, интересную UI
Yakov K.
[
"Собсна, как в ",
{
"type": "text_link",
"text": "MSWS",
"href": "https://github.com/purplenoodlesoop/msws_starter"
},
""
]
Daniil Kolyasnikov
Вот и пришли к тому что в mvvm мы имеем plain object в качестве model, не из доменного слоя
Yakov K.
Так а доменный слой куда делся? :)
Yakov K.
В VM? Тогда это уже нарушение ответственности VM
Daniil Kolyasnikov
Это уже другой слой. Тут доменная область не причём. Это же вью слой.
Newbie Developer
Ребят. Хочу на флаттере на старте парсить json из локального хранилища. Как думаете, какой его максимальный размер должен быть? Нигде не нашел инфы по этому поводу
Michael Lazebny
Размер кого
Yakov K.
Вопрос остается открытым – а где он тогда?
Newbie Developer
json`a. Вот у меня файл на 10 метрво будет, норм ли это или прила упадет?)
Michael Lazebny
[
{
"type": "pre",
"text": "E/MethodChannel#dexterous.com/flutter/local_notifications(23204): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)\nE/flutter (23204): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: PlatformException(error, Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference, null, java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference",
"language": ""
},
"\nбыла у кого-то такая тема при использовании local notifications?"
]
Миша
Ребят, а у кого-нить было такое, что с компа заходя на сайт на флаттере геопозицию спрашивали и все отоюражалось, а на тел не спрашивают и ты не отображаешься
SlavikG
Один раз распарсить и запихнуть в нормальное хоанилище
Миша
уточнение: только на айфонах не показывается геопозиция
Andrew Shalaev
[
"Привет, а есть у кого нибудь возможность посмотреть статистику в sensortower приложения ",
{
"type": "code",
"text": "WB consultation"
},
"? Очень нужно, можно скриншотом. Интересует, когда выкатили первую версию"
]
Deyew Vladimir
Всем привет! Подскажите, пожалуйста, в какую сторону копать. Проблема с одним из bloc. Суть такова: есть blocBuilder, когда получаем state is success (в стэйте хранится лист объектов), в gridView.builder отрисовываем виджеты, причем itemCount=длина списка, полученного в bloc.В параметры этих отрисовываемых виджетов передаем id, который берем из state.list[index].id. Дальше в каждом виджете я вызываю для нового bloc свой requestEvent(id, который брали с прошлого Bloc), и хочу отрисовать свой gridview для каждого виджета. Когда стэйт is success, я уже рисую конечный элемент. Зараза в том, что хотя судя по логам для каждого requestEvent второго Bloc у меня данные с репозитория приходят верные, но почему-то все конечные потребители данных из state последнего bloc получают результаты именно последнего requestEvent. В чем может быть загвоздка?
Пашка
может потому что блок чуть глобальнее
Deyew Vladimir
Не совсем понял.
Deyew Vladimir
Поясню свой пример попроще
Пашка
инстан блока для каждого виджета свой создаётся?
Пашка
или один общий блок?
Deyew Vladimir
Во, хороший вопрос..
Deyew Vladimir
Видимо один, я его прокидываю в main
Deyew Vladimir
Кажись дошло. Нужно убирать его с верха иерархии и прописывать в каждом отдельном виджете первоначального gridView?
Deyew Vladimir
Чтоб у каждого элемента грида был свой инстанс блока, тогда ответ на реквест будет у каждого свой?
Alexandr Drobyshev
PagedSliverList как в. нем паддинг сделать внутри?)
Alexandr Drobyshev
снизу надо пикселей 80 отступить в конце скролла
Deyew Vladimir
Спасибо, направили на путь истинный. Надеюсь, это поможет мне доделать тестовое задание ??
Пашка
вообще в мейне не стоит так делать
Пашка
у блока должна быть своя зона ответственности
Deyew Vladimir
А как надо?
Deyew Vladimir
Ага, понял.
Пашка
почему допустим из списка печенек я могу получить список мармеладов
Deyew Vladimir
Надо подправить. Смутил пример по блоку
Пашка
там где мармеладки ничего не должно быть известно про печеньки
Пашка
вы главное поймите контекст
Deyew Vladimir
Точно. А я тут смешал мед и мухи в одном месте
Пашка
что при новой страницы navigator.push свой контекст и тп
Deyew Vladimir
Все понял, спасибо огромное ??, побрёл переписывать код.
Миша
Вопрос по Flutter Web: было ли у кого-нибудь такое, что на андроиде и пк геопозиция бралась и на картах все показывалось, а с ios через те же браузеры - нет? Для работы с картами использую universe
Alexandr Drobyshev
чет не найду паддинга ни где там ?? хелп плиз))
Alexandr Drobyshev
можно конечно пустой фейковый итем пихать но это костыль какой то
Oleg
Не такой уж и костыль
Alexandr Drobyshev
ну если выхода нет то да ??
Oleg
Ну если скролл не нужно обрезать, то это и единственный способ в принципе
Alexandr Drobyshev
сделал так но это ппц) должен же быть норм способ
Andrey Novatovski
на чём можно написать бэк api чтобы с минимальными затратами по времени без опыта?
Yakov K.
А то как Haskell посоветую
Andrey Novatovski
надеюсь у многих здесь есть опыт выше flutter, поэтому и спрашиваю
Michael Lazebny
Без опыта ???
Andrey Novatovski
с опытом
d
Почему-то всплыл в уме Django + Django Rest Framework
Andrey Novatovski
тоже надо довольно долго разбираться)
Andrey Novatovski
пробовал кста
Yakov K.
Не советуйте пакость)
Alexandr Drobyshev
ruby on rails быстрей еще не на чем не кодилось) и вебсокеты из коробки)
Yakov K.
Node.js + TS + NestJS, но вам всё еще не сюда :)
Michael Lazebny
ну нода с apollo graphql, рельсы с графом
Andrey Novatovski
спасибо, чекну)
Andrey Novatovski
ну это уже проект надо на генераторы тогда садить ?)
Dima Kotlyarov
Тс + модульный нест уже не самое просто решение . Js express
Dima Kotlyarov
Вот верный ответ
Yakov K.
Соглашусь, речь же о простоте была :)
Michael Lazebny
может кто норм статью по flutter local notifications посоветовать ?
Michael K
Доброй ночи! подскажите плиз, я хочу бэкграунд поменять где диаграмма.дизайнер прописал с точками...а можно только линии делать...знает ли кто как? использую контейнер в котором эти диаграммы. пакет fl_charts
Alexandr
Всем доброй ночи, подскажите, как можно реализовать такую вот подписку(тоесть к бесплатному приложению добавить расширеный функционал за деньги раз в какой-то период списания)
Alexandr
Спасибо) Не подскажете, возможно есть какое видео или статья дельная где это все подробно описано
Tim
Официальная документация чем не угодила? + там очень большой example приложения у него, очень много полезного там находил
Tim
Да в гугле просто вбей «flutter in app purchase tutorial», ну :)
Alexandr
Да, да, уже так и сделал, спасибо большое ????
Пашка
гляньте directus на node js
Mansur Mansur
Здравствуйте
Mansur Mansur
Как просить Json
Mansur Mansur
Запарить массив маисов
Mansur Mansur
Ошибка выходит
Mansur Mansur
При fromJsom
Ray Kit
Там же вроде четко написано что он хочет и что ты суёшь ?
Arsenii Liunsha
[
{
"type": "pre",
"text": "\nidSolution = List .from(json['idSolution'].map((json) => MapNeedsSolution.fromJson(json)));\n",
"language": ""
},
"\n\nкак-то так должно быть"
]
Arsenii Liunsha
[
"либо для реюзабилити можно сделать так:\n\nВ классе MapNeedsSolution:\n\n",
{
"type": "pre",
"text": "static List listFromJson(list) => List.from(list.map((json) => MapNeedsSolution.fromJson(json)));\n\n\n",
"language": ""
},
"А затем использовать этот метод:\n",
{
"type": "pre",
"text": "idSolution = MapNeedsSolution.listFromJson(json['idSolution']);",
"language": ""
},
""
]
Arsenii Liunsha
Поправьте, если что-то не так :)
Jamshed Rakhmonov
Ребят почему URL launcher при вызове программы телефон не работает?
Jamshed Rakhmonov
Использую реальном устройстве, и оно не работает на андроиде 11
Michael Lazebny
Уже сам понял в чем ошибка была, но такое пример это скорее недостаток нежели преимущество
Миша
Ребят, кто может подсказать, почему геопозиция с браузеров на ios не может быть найдена? Я использую либу universe, где используется location, но почему-то именно с ios не ищется, да даже не запрашивается разрешение на пользование местоположением
Michael Lazebny
геопозиция с браузеров?
Миша
по сути, хоть universe не предназначен для web(не работает на некоторых браузерах), но location же должен работать
Michael Lazebny
ну через location и ищи
Миша
так в самой либе через него и ищется, я уж код весь просмотрел
Миша
спецом даже кусок кода нашел, который там вызывает получение геопозиции
freezlite
[
"Добрый день.\nЕсть ",
{
"type": "code",
"text": "FloatingActionButton"
},
" в нем календарь. Когда клацаешь иконку календаря выезжает окно выбора даты, после выбора даты даты хинт тексбокса не меняется пока этот бокс не переоткроеш.\nКак сделать так, чтобы сразу после выбора даты текстбокс сразу менялся ?\n",
{
"type": "link",
"text": "https://pastebin.com/AgvNjkw3"
},
""
]
Ка.V.II.
Кто нить сталкивался?
Alexandr Drobyshev
showDialog открывает в навигатеоре страницу на скок я помню, а стейт прив ыборе даты меняется на другой странице
Mitai
c отвратительными фотографами? каждый день
Mitai
в ошибке все написано
Миша
закинь все в ListView
Миша
есои я верно понял, то у тебя вне экрана уходит многое
Alexandr Drobyshev
когда вы вызываете showDialog, у вас вызывается фуцнкция бильд и там создается виджет return AlertDialog... вот он в том состоянии и есть на момент вызова показа иалога, относитесь к нему как будто вы открыли его как новую страницу типа navigator.push(AlertDialog) соотвесвенно вам можно передать туда напрмиер стрим, и юзать стримбильдер
Maksim
Всем привет! Подскажите, есть ли во флатере метод, который разделит число поразрядно и выведет строкой с пробелами? Например, 1234567 -> 1 234 567
Миша
так напиши функцию, которая будет переводить инт в стринг, а потом с конца через каждые 3 символа вставлять пробелы
Timur M.
Либу на каждый чих )
Maksim
Я не спрашивал про либы. В шарпе, например, это можно сделать при помощи toString. Поэтому я и спрашиваю, есть ли такое в дарте.
oramcheg
тоже есть toString )))
Миша
Кстати, мало ли кто сталкивался, а вопрос моц не увидел:)
Sergey
тыкаешь, пробуешь, ide подскажет и накажет
Maksim
В эмуляторе Feautures -> Location и выбери там геопозицию
Vitalii Ishkevych
Как в емуляторе настроить чтобы при открытии камеры было моё изображение?
Alexandr Drobyshev
кто то юзает flutter_html? там почему то есть отступ небольшой, как убрать?) То етсь вставляю просто текст и он сразу смещен от простого Text() в Column
Vitalii Ishkevych
Код скинь
Alexandr Drobyshev
Column([ Text('Text'), Html(data: 'Text'), ])
Миша
у меня сайт уже на хосте, только с ios не берет через браузеры геопозицию
Миша
с андроидов и пк все норм
Alexandr Drobyshev
[
{
"type": "link",
"text": "https://github.com/Sub6Resources/flutter_html/issues/772"
}
]
Alexandr Drobyshev
нашел)
ManBearPig
А откуда берет ? По ip?
ManBearPig
Что за вздор!)
ManBearPig
[
{
"type": "link",
"text": "https://pub.dev/packages/intl"
}
]
Миша
точнее, неверно высказался, через либу universe, которая берет через location
ManBearPig
Но если сайт (у вас вроде он) на дэсктопе? Не помню, что бы для дэсктопа поддержка была
Timur M.
Не документированная фича )
Timur M.
Кроме шуток, серьезно в вебе работает
ManBearPig
А как на ДЭСКТОПЕ откуда координаты ? Кроме как с ip другого варианта не вижу
Timur M.
Хз, браузер запрашивает разрешение на гео позицию
Миша
и берет гео уже с тлф
ManBearPig
Ну то есть как и писал , по ip)
Timur M.
А в новых версия иос Эппл блокирует такой способ определения позиции Тогда понятно почему на иос так не работает Ничего не сделаешь
Akhmed
[
"нужна небольшая платная консультация по ",
{
"type": "code",
"text": "StreamController"
},
""
]
Akhmed
кто может помочь ?
Alexandr Drobyshev
спроси тут бесплатно
Akhmed
там код надо показывать объяснять
Akhmed
тут быстро не опишу
ManBearPig
Только хотел написать ) Проще в бэке ip получить и по нему потянуть адрес, в после предложить его изменить - автоподсквзки
Судья Bread
[
"Здравствуйте! Тыкните, пожалуйста, где почитать/посмотреть примеры кода.\nИмеется: модели статьи и категории. Отношения между ними многие ко многим.\nВ json категории вложены в статьи. Я в ступоре, как раскидать по таблицам с учетом того, что категории должны быть уникальными в таблице - чтобы не сохранять много раз одно и то же значение. Модели, которые получаются на выходе у ",
{
"type": "link",
"text": "quicktype.io"
},
", я вынуждена вручную переделать, тк он предлагает тип enum, куда вшивает все имеющиеся значения категорий. Но проблема в том, что категории могут добавляться, удаляться, изменяться.\nВ туториалах везде примеры обработки связи один ко многим и не возникает идей, как на их основе обработать мой случай.\nТапки в руки не берите, я новичок во флаттер)"
]
tdesc
флаттер тут не при чем
tdesc
надо с моделью данных разобраться
Судья Bread
Я думала, это довольно типичный случай, только почему-то откопать не могу, то ли неправильно гуглю, то ли решение настолько тривиально, что не рассматривают отдельно
tdesc
типичный случай чего? какая задача решается? вообще есть sql таблицы, nosql коллекции или самостоятельно спроектированный по ддд домен данных
Судья Bread
Использую sqlitе
tdesc
чем обоснован выбор
Судья Bread
По условию задачи)
|