Size: a a a

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

2020 May 30

АК

Андрей Козак... in Dart & Flutter по-русски
и нормально ли это вообще
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
Rv Ch
слушай я сейчас выдернул имлпементацию из проекта в песочницу, и там все норм, хотя все повторил, разве что версия equaable была 1.0.0 в рабочем проекте а она аж ноябрь 19. возможно дело было в этом..
но ранее если стейт был SortedList и я пытался бросить ивент ListInverted, я просто видел что сыпятся ивенты но никаких транзакций между стейтами не происходило, теперь могу убрать миксин
т.е работает как положено, вернее стало работать


[EVENT in ListViewBloc<ListModel>]
      [ListInverted<ListModel>]
<TRANSITION in ListViewBloc<ListModel>>
        <Transition { currentState: SortedList<ListModel>, event: ListInverted<ListModel>, nextState: SortedList<ListModel> }>
[EVENT in ListViewBloc<ListModel>]
        [ListInverted<ListModel>]
<TRANSITION in ListViewBloc<ListModel>>
        <Transition { currentState: SortedList<ListModel>, event: ListInverted<ListModel>, nextState: SortedList<ListModel> }>
понятно
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
Андрей Козак
вот вопрос встает, как его прокинуть во все навигаторы
насколько я помню есть готовый .of метод у какого-то схожего названием класса
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
возможно того же самого
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
а, у тебя навигаторы отдельные
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
с таким дело не имел
источник

АК

Андрей Козак... in Dart & Flutter по-русски
так то по логике я могу взять провайдер и раздать по дереву какой-нить объект, который сможет манипулировать табом, ну и в нужно месте его получить. А можно через блоки, я прост хз что лучше. Нормально ли использовать блоки не для бизнес логики
источник

НК

Назар Калитюк... in Dart & Flutter по-русски
Может тупой вопрос, есть 3 виджета у которых общий контроллер анимации. Лучше их положить в 1 AnimationBuilder или в каждом виджете свой сделать? Как я понимаю если свой, то меньше перерисовывать, но так рисовать 3 раза, а если в общем то 1 раз, но все.
источник

КБ

Константин Буланов... in Dart & Flutter по-русски
Андрей Козак
так то по логике я могу взять провайдер и раздать по дереву какой-нить объект, который сможет манипулировать табом, ну и в нужно месте его получить. А можно через блоки, я прост хз что лучше. Нормально ли использовать блоки не для бизнес логики
Я вот провайдер заюзал чисто для state ui.
источник

АК

Андрей Козак... in Dart & Flutter по-русски
я ща пробую через GlobalKey)
источник

АК

Андрей Козак... in Dart & Flutter по-русски
но чуствую это совсем западло
источник

SS

Sergey Salnikov in Dart & Flutter по-русски
Андрей Козак
Всем привет. Подскажите, пожалуйста
У меня есть BottomAppBar, каждая вкладка - отдельный навигатор
По нажатию на кнопку в 4 вкладке, мне нужно переключить например на 2ую вкладку
Понятно, что можно сделать блок, кинуть событие и переключить вкладку по событию
Но нормально ли тут использовать блок? Может быть есть другой рекомендованный способ?
DefaultTabController определи выше и
юзай .of().animateTo()
источник

АК

Андрей Козак... in Dart & Flutter по-русски
а я без него, у меня на каждой вкладке отдельные навигаторы, я вручную рулю отображением через Offstage
источник

SS

Sergey Salnikov in Dart & Flutter по-русски
Андрей Козак
а я без него, у меня на каждой вкладке отдельные навигаторы, я вручную рулю отображением через Offstage
табы ты как перекючаешь?
велосипедами?
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
Андрей Козак
а я без него, у меня на каждой вкладке отдельные навигаторы, я вручную рулю отображением через Offstage
Жесть
источник

АК

Андрей Козак... in Dart & Flutter по-русски
Widget build(BuildContext context) {
   return WillPopScope(
     onWillPop: () async =>
         !await currentTab.navigatorKey.currentState.maybePop(),
     child: Scaffold(
       body: SnackBarListener(
         child: Stack(
             children: tabs
                 .where((element) => element.isInit == true)
                 .map((e) => _buildOffstageNavigator(e))
                 .toList()),
       ),
       bottomNavigationBar: BottomNavigation(
         currentTab: currentTab,
         onSelectTab: _selectTab,
         tabs: this.tabs,
       ),
     ),
   );
 }

 Widget _buildOffstageNavigator(TabItem tabItem) {
   return Offstage(
     offstage: currentTab != tabItem,
     child: TabNavigator(
       observers: [tabItem.heroController],
       navigatorKey: tabItem.navigatorKey,
       initialTab: tabItem,
     ),
   );
 }
}
источник

АК

Андрей Козак... in Dart & Flutter по-русски
Roman Vasiliev
Жесть
а я не осилил как по другому сделать навигацию в каждой вкладке отдельно
источник

SS

Sergey Salnikov in Dart & Flutter по-русски
Андрей Козак
Widget build(BuildContext context) {
   return WillPopScope(
     onWillPop: () async =>
         !await currentTab.navigatorKey.currentState.maybePop(),
     child: Scaffold(
       body: SnackBarListener(
         child: Stack(
             children: tabs
                 .where((element) => element.isInit == true)
                 .map((e) => _buildOffstageNavigator(e))
                 .toList()),
       ),
       bottomNavigationBar: BottomNavigation(
         currentTab: currentTab,
         onSelectTab: _selectTab,
         tabs: this.tabs,
       ),
     ),
   );
 }

 Widget _buildOffstageNavigator(TabItem tabItem) {
   return Offstage(
     offstage: currentTab != tabItem,
     child: TabNavigator(
       observers: [tabItem.heroController],
       navigatorKey: tabItem.navigatorKey,
       initialTab: tabItem,
     ),
   );
 }
}
самый простой вариант
stful + IndexedStack с ключом для переключения вкладок

по global ключу его берешь и дёргаешь jumpTo()

https://gist.github.com/cutzmf/2846d176cf645f4a540d65151bbc0b10
источник

АК

Андрей Козак... in Dart & Flutter по-русски
а в твоем примере без offstage разве не будут все вкладки отображены одновременно?
источник

SS

Sergey Salnikov in Dart & Flutter по-русски
Андрей Козак
а в твоем примере без offstage разве не будут все вкладки отображены одновременно?
они будут в дереве, мне не нужно диспозить эти вкладки
источник