Как стать автором
Обновить

Комментарии 2

Сложности при написании кода: большая вложенность виджетов.

Я например разбиваю на функции возвращающие Widget и все никакого кошмара.


@override
  Widget build(BuildContext context) {
   return
     new Column(
     children: [new Container(
     padding: const EdgeInsets.only(top:8.0),
       child: Row(
       mainAxisAlignment: MainAxisAlignment.spaceAround,
         crossAxisAlignment:CrossAxisAlignment.start,
       children: [
         rbuildButtonColumn(context,'img/data.png', 'Загрузить',pressdownload),
         rbuildButtonColumn(context,'img/doc_pokupka.png', 'Выгрузить',pressupload),
             ],
     ),
   )
     ,getprogress(context)]
     );
  }

UI Загружающая выгружающая sqlite базу.
rbuildButtonColumn Строит кнопку с рисунком с логикой pressdownload/pressupload Загрузить /Выгрузить
а ,getprogress(context)] Рисует Прогрес индикатор, а также, что загружено успешно, или ошибку.(с рисуночками соответствующими)
И ,getprogress(context)] Тоже разбит


 Widget getprogress(BuildContext context){
    switch (downloadstate){
      case 1:return getdownloading(context);break;
      case -1:return geterror(context);break;
      case 2:return getcompleted(context);break;
      default: return new Container();
    }
Спасибо за подсказку. Основная сложность для меня в том, что некоторые виджеты типа Row, SizedBox и т.д. надо проверять и изучать как делать лучше, какой элемент должен быть внутри, какой снаружи. Оборачивать весь виджет, либо перемещать его уровнем выше. vim-mode вместе с vim-регистрами очень полезны в этом случае.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории