Программирование : Dart & Flutter по-русски
Fearless Cry
Наверное стоит на пастбин залить
tdesc
AppState вот прям точно точно меняется?
Fearless Cry
В дебагере да, он другой
Fearless Cry
[
{
"type": "link",
"text": "https://pastebin.com/9Sn4djet"
}
]
tdesc
сделай print( “converter”)
Danil Chekalin
Как сделать, так чтобы (красный) блок с карточками выступал за предели родителя (фиолетовый) по ширине? То есть я бы хотел красный блок во всю ширину экрана Отрицательные маргины нельзя ставить как я понял. Красный блок, это ListView горизонтальный.
Fearless Cry
на каждый прокрут пикера, собсно
tdesc
это пакет flutter_redux?
tdesc
а воткни в build еще принт )
tdesc
там есть такой код в issues onWillChange: (viewModel) { if (viewModel.wasSuccessful) { Scaffold.of(context).showSnackBar(SnackBar( content: Text("Action was Successful!"))); } }
tdesc
builder: (_, _ViewModel viewModel) { print(“builder”); return ….. }
tdesc
ну вот ) все хорошо
Fearless Cry
Сейчас чекну
Fearless Cry
значение во viewModel меняется
Fearless Cry
но ничего не перерисовывается
tdesc
а у вас в коде ничего и не должно перерисовыватся или я не вижу )
tdesc
initialItem: viewModel.vaue <====== начальное значение
Fearless Cry
да, у пикера должно установиться это значение
Fearless Cry
Но у него остаётся старое значение
tdesc
он не пересоздается таким образом скорее всего
tdesc
scrollController нужно вынести из build
Fearless Cry
а как мне ему прокидывать значение от вьюмодели
tdesc
по идее менять его в scrollController
Fearless Cry
ну щас же так и делается
Fearless Cry
создаётся новый объект
tdesc
ну контроллеры они особенные
Fearless Cry
и в конструктор кидается параметр из ьюМодели
tdesc
их еще и dispoзить надо
Fearless Cry
хм. Сейчас попробую тогда другой параметр менять
Fearless Cry
Да, действительно меняется
Fearless Cry
Сейчас попробую вынести контроллер
Fearless Cry
Да, с контроллером что-то супер плохо всё
Danil Chekalin
Как сделать, так чтобы (красный) блок с карточками выступал за предели родителя (фиолетовый) по ширине? То есть я бы хотел красный блок во всю ширину экрана Отрицательные маргины нельзя ставить как я понял. Красный блок, это ListView горизонтальный.
Ashot Pilosian
Можно попробовать использовать Stack, и в нем сначала фиолетовый виджет, а следующим слоем красный виджет, если я правильно суть понял
Danil Chekalin
мне надо во всю ширину экрана
Ashot Pilosian
В этом случае ширина фиолетового виджета не будет никак влиять на красный, т.к. он не будет родителем красного
Danil Chekalin
а под красный блок внутри фиолетоваго заглушку вставить?
Danil Chekalin
чтоб можно было ниже вставлять что-либо
Ashot Pilosian
Условно говоря, я предложил фиолетовый виджет сделать фоном, а поверх него рисовать все что тебе надо, типа красного виджета и следующего под красным и т.д.
Ashot Pilosian
То есть стек: 1. фиолетовый бэк, 2. колонка: 2.1. красный виджет, 2.2. любой другой виджет ....
Danil Chekalin
у меня много будет всякого внутри фиолетового контейнера, и этот красный блок единственный блок который на полную ширину нужен
Danil Chekalin
я так понимаю ты мне предлагаешь такое 1. фиолетовый 2. красный (полная ширина) 3. фиолетовый снова под другой контент так?
Ashot Pilosian
я предлагаю вот так стек: 1. фиолетовый бэк, 2. колонка: 2.1. красный виджет, 2.2. любой другой виджет ....
Danil Chekalin
я не понимаю, чт значит фиолетовый бэк, фиолетовый контейнер уже находится в другом контейнере, который имеет маргины по горизонтали
Ashot Pilosian
[
"Я, к сожалению, не понимаю, что ты пытаешься сделать в итоге и как ты это делаешь, просто вбрасываю мысль, что как вариант можно использовать стэк. Оставить его статичным и поверх него уже лепить че хочешь и как хочешь \n\n",
{
"type": "link",
"text": "https://docs.flutter.io/flutter/widgets/Stack-class.html"
},
"\n\nStack(\n children: [\n Container(фиолетовый контейнер с марджинами и прочим),\n Column(\n children: [\n Container(красный виджет),\n Container(другой какой-то виджет),\n ...........\n ]\n )\n ]\n)"
]
Danil Chekalin
[
"переделал на стек,\n",
{
"type": "pre",
"text": "child: Stack(\n children: [\n Container(\n margin: EdgeInsets.symmetric(horizontal: 30.0),\n color: Colors.purple,\n child: Text(\"Math Reports\"),\n ),\n Container(\n height: 170,\n color: Colors.red,\n margin: EdgeInsets.only(top: 30),\n child: ListView(\n scrollDirection: Axis.horizontal,\n ),\n )\n ],\n ),",
"language": ""
},
""
]
Danil Chekalin
но теперь контейнер (фиолетовый) имеет размер не во всю ширину
Fearless Cry
Оберни в Positioned.fill
First Last
[
{
"type": "link",
"text": "https://github.com/shindakioku/fpfantasy/issues"
},
"\nПарни, буду благодарен ^_^"
]
Анатолий
Че у тебя аватарка на гитхабе и в телеграме когда шаришь отличается?
Анатолий
В телеграме старая?
Анатолий
ох уж этот бесконечный кеш
First Last
Полгода где-то
Анатолий
херасе они кешируют
Анатолий
Ну как-то немножечко долго )
First Last
Кстати, новая мобильная ОС от гугла юзает flutter Будем жить! ^_^
First Last
[
"Еп\n\n",
{
"type": "link",
"text": "https://github.com/fuchsia-mirror"
},
""
]
RЯ
интересно заменит ли она андрея или нет
admin
[
"про нее еще канал уже в тг есть ",
{
"type": "mention",
"text": "@fuchsia_dev"
},
""
]
admin
ну те кто в гугле работает над фуксией особо инфой не бросаются, команды не было еще)
DVS (Read The F.ng Manual) Studio (NoHello)
Ещё 2 года ждать ее в нормальном виде
admin
у аккета заголовки ппц желтые
Анатолий
На смартфоны фуксия придет не скоро, у гугла по планам смартфоны не первый этам
Анатолий
Были уже новости + гугл сам коментировал эту ось
admin
"Google выпустила первую сборку Android более 10 лет назад, за которые данная операционная система очень сильно изменилась, причем, конечно, в лучшую сторону. Теперь она работает очень быстро, потребляет мало электроэнергии, обладает улучшенной системой защиты и более привлекательным дизайном." хорошая шутка
admin
особенно про работает очень быстро и потребляет мало энергии
Анатолий
Ну если у тебя галакси 9 макс то так и есть
admin
у меня ща ванильный дроид и то он тормозит, я не говорю если у тебя оболочки какие-то, там вообще ад
admin
пока там гномики с GC бегают, времени валом набирается
admin
и это 8.1 андроид..
RЯ
ну если батарея 5к то конечно мало))))
Igor Filippov
Так её же для смартфонов и делают, чтобы от ораколовского рабства избавиться, я так понимаю
Анатолий
[
{
"type": "link",
"text": "https://www.bloomberg.com/technology"
},
" более старая статья но более подробная"
]
Анатолий
Я не пытался, я сделяль!
First Last
Стоп стоп стоп
First Last
[
{
"type": "pre",
"text": " E elementAt(int index) {\n if (index is! int) throw new ArgumentError.notNull(\"index\");",
"language": ""
},
"\nЯ совсем дурак?"
]
First Last
[
{
"type": "link",
"text": "https://gist.github.com/shindakioku/c1d86e2bf216b945b3ad1959446737fd"
},
"\n\nРазве нет? ??"
]
First Last
Оффтоп Можете поздравить меня, моя библиотека имеет синюю иконку на pub ^_^ :D
Vyacheslav
/* нытьё */ Ну как так можно в главной либе делать: abstract class TickerProviderStateMixin
Анатолий
ты там чего забил на половину )
Анатолий
Синяя иконка это круто!
Олжас Сулеймен
[
"есть еще хорошая библиотека с набором утилит ",
{
"type": "link",
"text": "https://pub.dartlang.org/packages/quiver"
},
""
]
Денис Трачук
В рилизной сборке оптимизатор транспилятора сам выкинет все неиспользуемое
Денис Трачук
Про это не скажу, но в вм это совсем не принципиально
Олжас Сулеймен
так включаите что надо import 'package:quiver/strings.dart';
Dmitry
Народ. Как должно работать офлайн приложение. И нужно ли оно всем?
Dmitry
К примеру. Нужно узнать версию приложения. А без интернета не узнать. Тут не сделать офлайн режим?
Evgeny Kot
Пожалуйста, формулируйте вопросы точнее. Телепаты в отпуске
Dmitry
Вопрос. Всем ли приложениям нужен офлайн режим?
Evgeny Kot
Нет, не всем, зависит от вашей бизнес потребности. Трудно представить банк клиент например оффлайн
Dmitry
Ещё вопрос. Есть какая-то системная информация. Её нужно передать на сервер. Но что бы юзер не знал. К примеру случилась ошибка. И данные не передались. Что в этом случае делают? Забивают? Или как то пытаются повторить?
Valeriy Manenkov
Отображают эту информацию в оффлайне на устройстве. Время от времени происходят попытки синхронизации
Evgeny Kot
Ну если она вам очень нужна - то организуйте какую-то отложенную отправку, при появлении коннекта
Dmitry
Дело в том что может быть любая ошибка. Как на счёт если не отправилось тогда раз в n секунд ещё попытка и так n раз. А вообще оф режима нету. Тут просто не пускать в приложение
Evgeny Kot
Это вопрос по организации архитектуры приложения или по организации бизнес логики? Если второе - то это целиком зависит от ваших потребностей, и не для чата
Vyacheslav
Ну прямо совсем не интернета не работать — это очень плохо. Для каких-нибудь ошибкок уже написано для платформ. На Андроиде, есть, например, acra . Но она на джаве, если что
Dmitry
Ну к примеру делать нечего в приложении без интернета. Там заказы и все. Типа такого. Не понял что такое Acra
??????????????????????????????????? лечу в твой ЧСв??
[
"Ребятки, как определить регион пользователя, для отго что бы по умолчанию выбрать более правильный ",
{
"type": "code",
"text": "код страны"
},
" в полее выода телефона ?"
]
Fearless Cry
Можно взять информацию о сим карте
Fearless Cry
Можно взять текущий язык на девайсе и по нему отобразить код
Fearless Cry
Можно и то и то в зависимости от того есть симка или нет
??????????????????????????????????? лечу в твой ЧСв??
ru-RU ,а я в украине\казахстане\беларуси ?
Fearless Cry
Ну по симке смотри
??????????????????????????????????? лечу в твой ЧСв??
а как сичитать инфрмацию о симке ?
Fearless Cry
Предполагаю что платформо-зависмый код будет
Fearless Cry
То есть на iOs и Андроид придётся два метода написать
Олег Диденко
Я выше давненько тут задавал вопрос, ответа не было, написал нативно
Олег Диденко
Работает неплохо, надо сказать)
Fearless Cry
Ну это так или иначе будет нативно, потмоу что любая библиотека которая обращается к хосту пишется на нативе
Dmitry
видел. Не подходит. И там же нету фаербейс. Хотя очередь интересно. Но когда ее опустошить. хз
Dmitry
тогда смысла нету от очереди. Ошибки могут быть по различным причинам. Не только оф
Dmitry
ну это конечно хорошо. Но у меня концепция вообще другая. Тут придется писать свое (ну и в принципе нужно ли)
Ernest Stanbekov
можно ли класс передавать как параметр другого класса7
Ernest Stanbekov
есть класс LoginPage(), нужно передать его в виджет
Ernest Stanbekov
Widget _buildCard (String name, Object link, Icon iconImage, int cardIndex) {
Igor
[
{
"type": "pre",
"text": "> Достаточно взять с собой ноутбук с предустановленной Android Studio и Flutter",
"language": ""
},
"\n\nА что VSCode не устраивает?\nНадо показывать людям, что можно писать мобаил легко без тормознутой AS"
]
Evgeny Kot
Можно и его, это не так важно, на самом деле
Anton Anokhin
[
"FYI небольшой обзор про кроссплатформенность дарта от Алексея Золотых, Wrike ",
{
"type": "link",
"text": "https://youtu.be/bYjsdmrrFTI"
},
" Доклад с конференции SECR"
]
Анатолий
Используй шаблоны
Ernest Stanbekov
Можете пример скинуть?
admin
Это generics, а не шаблоны
Анатолий
Еще обобщения их называют. Названий много, в зависимости от времени и языка
admin
тут дело не в названии, шаблоны (которые в плюсах) гораздо более мощный инструмент, чем женерики
Анатолий
Ну принцип тот же ведь?
admin
женерики это часть функциональности шаблонов
Анатолий
ну дженерики так дженерики
admin
[
"даже есть статейка с различиями от мс ",
{
"type": "link",
"text": "https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/generics/differences-between-cpp-templates-and-csharp-generics"
},
""
]
admin
правда они их тоже шаблонами называют, лол
admin
но видимо косяк перевода
Анатолий
ну по сути это и есть шаблон, ибо код без уточнения "теоретический"
Анатолий
но просто наверно название изменили чтоб не имели ввиду сишные шаблоны
admin
ладно, возможно, в конце концов это просто нейминг
Анатолий
я не обращаю тут внимания на название ибо в дарте все равно нет полнофункциональных шаблонов, по этому не будет двузначности
??????????
Всём привет, никак не могу понять, как вокруг кнопки нарисовать бордер.
??????????
Может кто помочь?
Александр
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/50083390/create-a-button-with-rounded-border"
}
]
Александр
Ну гуглится же всё
First Last
А если не flutter?)
Анатолий
1. берем класс который используем 2. идем в доку флаттера 3. вводим класс в поиск 4. нажимает control + f 5. вводим border 6. ??? 7. profit! Обычно эти 7 пунктов работают
Ashot Pilosian
А вот на реакт нейтив я бы сделал это быстрее
andrei tshurotshkin! ??
точнее нет, там же ад со сборщиком и вообще заюзать жс либы какие-то не для реакт натива сделанные
Fearless Cry
жаль сам реакт нейтив работает медленнее
Анатолий
Это потому что ты его знаешь уже, теперь, когда узнал как это сделать на флаттер, то ты это сделаешь одинаково
Ashot Pilosian
*я просто набросил, я даже не знаю реакт нейтив, извините*
Анатолий
На самом деле в подходе флаттера есть и плюс, по началу это кажется супер отстойно он! Я когда писал на флаттере сначала плевался обьектной структурой, но потом словил себя на мысли что если чего-то не знаю, просто нажимаю контрол + пробел и под полям именованым сразу понимал что куда совать. В итоге это, если постоянно пользуешься, сильно ускоряет написание кода через время
andrei tshurotshkin! ??
[
"Хм, а раз реста нет, можно же заюзать ",
{
"type": "link",
"text": "Function.call"
},
""
]
Fearless Cry
жми контрол и наводи мышкой на объект, он тееб сразу весь список параметрво выкинет с типами
Fearless Cry
Ну правда это же к флаттеру не относится, это ИДЕ
First Last
Ты не полностью понял о чем он хотел сказать
First Last
И не только иде раз на то пошло :)
First Last
Текстовые редакторы
Анатолий
сама структура флаттера предполагает в сумме с подсказкаи иде выше скорость именно из-за структуры обьектной
Анатолий
в рн я хз че там со стилями, у меня нет списка под рукой и я не вижу их хоть какое-то подобие в подсказках иде
Анатолий
по этому дока была всегда открыта при разработке
Анатолий
флоу укажет типы, но не даст понимания вариантов аргументов
Анатолий
реакт со стилями работает своеобразно, по сути это обьект
Анатолий
с кучей возможных параметров
andrei tshurotshkin! ??
Это что
First Last
[
"Пожалуйста, ",
{
"type": "code",
"text": "gist"
},
""
]
andrei tshurotshkin! ??
[
{
"type": "link",
"text": "https://gist.github.com/goodmind/ab6efed7d87132203eec2873a6e87bdc"
}
]
andrei tshurotshkin! ??
Не понял
andrei tshurotshkin! ??
А разница
Анатолий
это не спред оператор, это костыль
Анатолий
разница вот в чем
andrei tshurotshkin! ??
Делает то что мне надо было, вариабл аргументы
andrei tshurotshkin! ??
Это не костыль если лучше сделать нельзя
andrei tshurotshkin! ??
Это единственное решение
Анатолий
[
{
"type": "code",
"text": "function qwe(String arg1, String arg2, String[] ...arg3)"
},
" вот так работает в других языках"
]
andrei tshurotshkin! ??
Почему не добавляют?
Анатолий
Твой вариант называется "как передать в функцию много параметров" а не спред
andrei tshurotshkin! ??
Не спред
andrei tshurotshkin! ??
А рест
andrei tshurotshkin! ??
Спред для объектов
andrei tshurotshkin! ??
не вижу проблемы)
Анатолий
разница в том что у тебя просто набор непонятно чего приходит, а рест это "остальные" помимо тех что мне нужны явно
|