Итак ты хочешь сказать, что синглтон паттерн не отличается от static?)
???????
Правильно тебя понял?)
Pavel Pimenov
ну типа в синглтоне можно добавить ленивую инициализацию
???????
Все?)
Pavel Pimenov
можно запретить создавать больше одного экземпляра, если это какой-то свой класс (но здесь же Object)
???????
Там отличий целый вагон)
Pavel Pimenov
хм, а что ещё?
???????
Ну можешь написать "singltone vs static" в гугле
???????
Там множество отличий, от способа хранения в памяти до архитектурных
???????
[
"Ну и просто бонусом, для флатера может быть полезной такая запись, например:\n\n",
{
"type": "pre",
"text": " // ignore: close_sinks\n final StreamController
???????
Тобишь если эта переменная у тебя такая прям ниибаца важная - подписываешься на её изменение в стримбилдере или организовываешь автороутинг или чо у тебя там.
???????
Но опять же, яб посоветывал так не делать, если есть возможность и хватает знаний так не делать)
Pavel Pimenov
[
"да, но это можно написать в классе как static, или вообще глобально, и ничего не измениться\n\nпросто в первом случае ты будешь делать\n",
{
"type": "pre",
"text": "MyVarHolder().data = 'value';",
"language": ""
},
"\nво втором —\n",
{
"type": "pre",
"text": "MyVarHolder.data = 'value';",
"language": ""
},
"\nа в третьем —\n",
{
"type": "pre",
"text": "data = 'value';",
"language": ""
},
""
]
[
"Там куча отличий, говорюж.\n\n\nНапример синглтоном у меня частенько логер, тк этот парень нужен везде и всегда.\nНо там где он нужен я не дергаю абстрактный класс, а схороняю ссылку на него.\n\nУсловно:\n\n",
{
"type": "pre",
"text": "class A {\n final Log _log = Log();\n\n methodA() {\n this._log.v('.....');\n }\n}",
"language": ""
},
""
]
???????
Ты можешь передавать синглтон как переменную метода.
???????
С архитектурной точки зрения глобальная переменная значительно проигрывает синглтону, тк он создает еще хоть какуют иллюзию нормального приложения и связаности, тогда как глобальная переменная это просто сразу +100500 к спагетти коду.
Pavel Pimenov
[
"вот мне кажется, что именно ",
{
"type": "italic",
"text": "иллюзию"
},
"\n\nведь по факту синглтон можно дёрнуть откуда угодно, как и глобальную переменную)"
]
добрый вечер, кто-нибудь работал с Managed Databases от DigitalOcean? есть вопрос один...
???????
Неа, но может исходя из вопроса сообразим?)
northelks
[
"ну вопрос больше в настройках.. не могу понять, отчего не пускает коннекшен туда\n\nчерез консольку psql могу лёхка глянуть что там \n\nа вот через прилагу, акведук, не хочет коннектиться, пишет \"Reason: unable to connect to database.\"\n\nв логах на DO стороне пишет мол no pg_hba.conf entry for host \"",
{
"type": "link",
"text": "xxx.xxx.xxx.xxx"
},
"\""
]
northelks
я то понимаю, что нужно типа поправить pg_hba.conf.. но это Managed Databases и у меня нету доступа к серваку
???????
Тама надо разрешить в конфиге не только localhost'у вроде
???????
[
"Там поправить над и указать, образно говоря, ip ",
{
"type": "link",
"text": "0.0.0.0"
},
" (если можно вообще всем)"
]
northelks
так у меня нету доступа к настройкам, кроме как те, что в вебе
northelks
там я прописал свои айпишки
northelks
вот почему нету доступа
???????
[
"Попробуй ",
{
"type": "link",
"text": "0.0.0.0"
},
" прописать а затем ребутнуть"
]
northelks
я не могу менять pg_hba.conf или прописывать свои апи, DO даёт указать апи только существующих нод/кампутеров
лучше в чего вмешать контейнер чтобы он скролился когда его height или width выходит за рамки экрана.
Fearless Cry
SingleChildScrollView
ilx13
он может в себе потом вмешать listview?
Fearless Cry
а зчаем вам вмещать листвью туда
Fearless Cry
вопрос был про контейнер
ilx13
у меня проблема с height сейчас. а внутрь SingleChildScrollView я сделаю еще ListView scroll horizontal
ilx13
пардон. грубо ошибся с вопросом
Fearless Cry
с horizontal прокатит
ilx13
спасибо
Fearless Cry
только у него высота должна быть задана
Fearless Cry
у листа горизонтального
ilx13
у сингл?
ilx13
ааа. ясно спасибо
ilx13
в лист как высота дается?
Fearless Cry
Оберните в sizedBox
ilx13
все четко сработал. я благодарен Вам Артем
ilx13
как поменять цвет статус бара без аппбара?
ilx13
[
"SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(\n statusBarColor: ",
{
"type": "link",
"text": "Colors.blue"
},
", //or set color with: Color(0xFF0000FF)\n));\nне помогает"
]
ilx13
почему не работает у меня можете помочь?
petyappetrov
для чего вебсокеты нужны в flutter? только для чата?
???????
Наркоман?
petyappetrov
для новых данных, например для заказов можно обойтись одними пушами?
???????
Для тогоже для чего и везде
???????
Для оперативного обмена данными и поддержания их актуальности
petyappetrov
для чата
???????
да для чата
petyappetrov
спасибо
petyappetrov
просто не доконца понимаю как работают пуши в мобильных устройствах
petyappetrov
думаю можно одними ими обойтись для актуальности данных
petyappetrov
я ведь прав?
petyappetrov
чата не будет, будут только заказы
Fearless Cry
Пуши внутрях поди на соккетах и держатся
petyappetrov
а хм, окей это меняет дело, пойду копать дальше
???????
Там как реализуешь, вроде
???????
Смысл самого "Пуша" это что просто сервайс вокер (отдельный поток) со специальным объектом
???????
А как реализуешь - уже хозяин барин
Fearless Cry
Я думаю речь про fcm просто
???????
Как не крути, транспорта то всего два: http и web socket'ы
Fearless Cry
Транспорт один: tcp ??????
???????
Вот давай без сетевой модели OSI, ок?)
Fearless Cry
??????
petyappetrov
можно обойтись fcm, спасибо
Hellomik
Напомните как уменшить размер виджета ,чем далше он от центра
Sultonbek Akhmedov ????
???>?
Vyacheslav
[
"всем привет, что с этим варнингом делать, подскажите пожалуйста. При запуске тестов появляется\n",
{
"type": "pre",
"text": "Warning: You should set `SILENT_OBSERVATORY` to true when debugging the VM as it will output the observatory URL by default.\nThis breaks the various reporter contracts.\nTo set the value define `DART_VM_OPTIONS=-DSILENT_OBSERVATORY=true`.",
"language": ""
},
""
]
Max
Технически, firebase message service это, кажется, http, но в другую сторону. И изнутри приложения он, разумеется, не http и не websocket
A1ex Petrov (К)
Всем привет, у меня есть класс, в котором есть изображения, и для свайпера я через rxdart и стримбилдер слушаю, и устанавливаю значения, вопрос вот в чем, при переходе на новую страницу, где я так же слушаю значение через стримбилдер сначала передается null, а потом уже само значение, как этого избежать и сделать что бы принималось только значение?
Max
Если смотреть на разницу, в Firebase стоит запихивать то, что должно быть видно пользователю даже при выключенном приложении. Редкие интерфейсные события. Текущую синхронизацию удобнее и надёжнее реализовывать через websocket. К тому же, затащив websocket, можно отказаться от классических get/post запросов.
Max
Не запускать рендер до получения осмысленного значения?
Dima
или gRPC, в зависимости от задачи
A1ex Petrov (К)
Блин, логично, спасибо, опробую сегодня
Max
То, что сначала у тебя null - это нормальная природа асинхронности. Вопрос в том, что ты с этим нуллом делаешь.
A1ex Petrov (К)
В if завернуть? Если пришло значение, рендерить, если рет - нет
Max
Или рендерить лоадер. Смотря, насколько быстро ты ожидаешь данные.
Вместо ифов для стримов есть удобные трансформеры, если что.
???????
Так пуши то не только фаербейс, не?)
Там все сводится к сервайс вокеру, специальному апи браузера и реализации самого транспорта.
A1ex Petrov (К)
Напиши куда копать пожалуйста, я почитаю, данные вообще сразу же получаются, следом после null
[
"Подскажите кто опытный, как тестировать локализованные виджеты (flutter_localization). Я вот как тут (",
{
"type": "link",
"text": "https://gist.github.com/imigalkin/5ecddacec27e160d0017a63d4a14a1b0"
},
") делаю но проходит только 1-й тест остальные падают"
]
Vladimir Migalkin
Я знаю, что это из-за асинхронного load в AppLocalizations. T.e. если его сделать синхронным (не грузить json через bundle а присвоить мапу), то все работает как надо. Может я чего-то не так делаю?
???????
Ну так а как ты делал смену языка в приложении?)
Vladimir Migalkin
Не очень понимаю вопрос, поясни пожалуйста
???????
Ну это наводящий вопрос. Вот пользователь захочет в твоем приложении выбрать другой язык, как ты это реализовал?)
Vladimir Migalkin
Эм а зачем это реализовывать? Есть общая локаль на уровне платформы
Alex Kharechko
во первых нужно сделать чтобы не захотел) тоесть подставить его язык. во вторых ты конечно прав нужно сделать такую возможность. а вариантов «как» не мало вроде
???????
Так в том и дело.
Я хоть и не пишу на флатере, но яб сделал так:
1) Стримбилдер над MaterialApp ловящий смены локали или темы оформления 2) При инициализации, пока крутится спиннер - достается из hive схороненный язык, если нету тама его - дергается системный, если и тама нету - English 3) БЛоК выдает стейт со сменой языка - устанавливается локаль 4) БЛоК выдает стейт инициализированного приложения - автороутинг с экрана загрузки на домашний экран 5) При смене языка пользователем запускаешь эвент, на который ложится в хайв локаль и запускается стейт со сменой языка
Mike
эм, ну вот поставлю я французкий, какой язык ты мне будешь отображать, если у тебя нет французского?)
???????
Ты: Как мне менять язык? Также ты: Зачем мне менять язык? Мне не надо!
Alex Kharechko
у меня назрел вопрос, как столько знаешь по флатеру если не пишешь нанем? ведь все очень быстро меняется
???????
Ну я иногда пописываю, но не в прод, а просто смотрю возможности и обкатываю архитектуру
Alex Kharechko
когда (если), дойдет время до фуксии, кто флатер тот и натив
Evgenii Elchev
1) положил все в стек 2) кнопкам добавил ключи 3) по ключу получил размер и координаты кнопки 4) контейнеру поставил эти же размеры и margin
Alex Kharechko
ну норм, если работает. этож главное для заказчика, ему пофиг как реализовано
Evgenii Elchev
если это норм, то довольно изи делается, и кода там не 1000 строк)
Evgenii Elchev
мне не пофиг)
Evgenii Elchev
и хочется что бы там где я работал тоже было не пофиг)
Alex Kharechko
так не бывает )
Evgenii Elchev
я тебя огорочу) но последние лет 5 там где я работаю не пофиг) есть ревью и за фигню дают по шапке)
Alex Kharechko
ладно шутки шутками, но ты же сам понимаешь что сделал нормально, я просто не знаю как ты их перемещаешь, лучшим вариантом конечно Align внутри Stack,
Evgenii Elchev
хз, я когда в ios начинал тоже делал вещи и думал что это нормально, потом понимал что нет) по этому и спросил
мне еще размер надо менять, это в тесте что я скинул все кнопки одинакового размера, а по факту они разного могут быть
Alex Kharechko
по факту можно и размер менять вместе с позицией, у тебя нормальное решение, в чем проблема?
Alex Kharechko
я тебе просто подсказал виджет который умеет перемещать куда надо с анимацией
???????
Отвлеченный вопрос художественной направленности) Хочу различные точки входа (main.dart) для различных платформ. Как бы покрасивше обозвать?)
???????
[
"Чот кроме ",
{
"type": "code",
"text": "main_web.dart"
},
" ничего в голову не лезет"
]
Alex Kharechko
главное в имени файла сразу понятно, что он за собой ведет
???????
[
"Ну мб там у кого есть предложения лучше)\nКакоенить там ",
{
"type": "code",
"text": "webEntryPoint.dart"
},
""
]
Alex Kharechko
[
"тогда уж ",
{
"type": "code",
"text": "web_entry_point.dart"
},
", в любом случае у тебя лучше"
]
???????
Оке, сяп.
Evgenii Elchev
проблемы нет, хотел что бы подтвердили, норм не норм)
Evgenii Elchev
[
"я бы ",
{
"type": "code",
"text": "main_web.dart"
},
" и оставил. Понятно что это main, понятно что это web, что еще надо? а так сиди думай, что за entry_point"
]
???????
Сча, я чуть лучше придумалб) Сча сделаю, поделюсь очевидным решением)