Size: a a a

Dart & Flutter по-русски

2021 May 22

О

Открывая Вьетнам... in Dart & Flutter по-русски
код пример
источник

О

Открывая Вьетнам... in Dart & Flutter по-русски
мне нужно было получать экземпляры разных виджетов в зависимости от мапы что я передаю в конструктор FormSelector
источник

О

Открывая Вьетнам... in Dart & Flutter по-русски
думал для этого и нужен фабричный конструктор, но все оказалось слишком сложным
источник

DY

Daniyil Yevtyushkin in Dart & Flutter по-русски
а виджеты кардинально отличаются?
источник

О

Открывая Вьетнам... in Dart & Flutter по-русски
да
источник

DY

Daniyil Yevtyushkin in Dart & Flutter по-русски
или, к примеру, размером текста и цветом
источник

О

Открывая Вьетнам... in Dart & Flutter по-русски
Полностью отличаются, совершенно разные виджеты. От Text() до графиков)
источник

DK

Danial Kolyasnikov in Dart & Flutter по-русски
Используй фабричные методы или фабрику(функция, которая смотрит на мапу и возвращает нужный виджет).

class SomeFormShit extends StatelessWidget {
 final String name;
 final String value;
 final Color color;

 const SomeFormShit({Key key, this.name, this.value, this.color})
     : super(key: key);
 @override
 Widget build(BuildContext context) {
   return Container(
     color: color,
     child: Column(
       children: [
         Text(name),
         Text(
           value,
         )
       ],
     ),
   );
 }

 static SomeFormShit fromJson(Map m) {
   if (m['color'] == 'red') {
     return SomeFormShit(
         color: Colors.red, value: m['value'], name: m['name']);
   }

   return SomeFormShit(
     color: Colors.white,
   );
 }
}


использование
child: SomeFormShit.fromJson(map),
источник

О

Открывая Вьетнам... in Dart & Flutter по-русски
Спасибо! Но чем это будет отличаться от такого кода?
источник

О

Открывая Вьетнам... in Dart & Flutter по-русски
class FormSelector extends StatelessWidget {
 final Map <String, String> formData;

 const FormSelector({this.formData, Key key}) : super(key: key);

 @override
 Widget build(BuildContext context) {
   if (formData['type'] == 'Widget1') {
     return Widget1(
       formData['name'],
     );
   } else if (formData['type'] == 'Widget2') {
     return Widget2(
       formData['name'],
     );
   } else {
     return Text('Тип виджета не определен');
   }
 }
источник

О

Открывая Вьетнам... in Dart & Flutter по-русски
В чем минус если я раскидаю все в билде?
источник

DK

Danial Kolyasnikov in Dart & Flutter по-русски
Почти ничем, это тоже норм.
но лучше без else и в конце всегда безусловный ретурн оставить лучше
Widget build(BuildContext context) {
   if (formData['type'] == 'Widget1') {
     return Widget1(
       formData['name'],
     );
   } ;
  if (formData['type'] == 'Widget2') {
     return Widget2(
       formData['name'],
     );
   };
 return Text('Тип виджета не определен');
 
 }

Без else красивее, а последний ретурн без условия спасет от неприятных ситуаций
источник

О

Открывая Вьетнам... in Dart & Flutter по-русски
благодарю! можно пример неприятной ситуации, не понимаю отличие else и return в данном контексте
источник

V

Vlad in Dart & Flutter по-русски
Кто может обяснить что такое factory? Я вообще не могу понять. Может какими то простыми словами или аналогиями
источник

О

Открывая Вьетнам... in Dart & Flutter по-русски
конструктор в котором можно задать логику, если я не ошибаюсь)
источник

P

PronKing in Dart & Flutter по-русски
источник

EF

Eugene Freeman in Dart & Flutter по-русски
ребятки я во флатере новенький, если есть ли у вкс что-то аля бутстрап?
источник

KK

Kit Khilobok in Dart & Flutter по-русски
Что значт а-ля
Бутстрап это просто набор компонентов, применительно к флаттеру это material и cupertino компоненты
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
если я пересоздаю Provider( create: () => Model() )
он модель не пересоздает что ли? он где то в стаик переменной хранит?
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
CNAHGED пишет каждый раз когда надо а вот RECREATE REPO 1 раз за жизнь)
источник