Более глубокое понимание: Stateful виджет всегда перестраивается, хотя я нахожусь в другом представлении?

Проблема: GroupsOverview (который использует Futurebuilder - код очень длинный и здесь не отображается), похоже, продолжает перестраиваться при переходе через другие представления (а также "подпредставления") в приложении, что приводит к слишком большому количеству операций Algolia. Я думаю, что это проблема, когда дерево дыр перестраивается, но я понятия не имею об этом. Мысль об интеграции, например, модель Scope.

У меня есть серьезная проблема, когда заканчивается мое общее понимание как начинающего флаттера. У меня есть класс "GroupsOverview", который (для каждой перезагрузки) показывает группы на основе моего текущего местоположения с живыми данными из веб-службы (Algolia). Это виджет с состоянием, так как текущее местоположение загружается через initState. Представление представляет собой вкладку в представлении с вкладками, которое опять же с состоянием. Keepalive, кажется, не работает. Итак, как я могу управлять тем, что виджет с сохранением состояния GroupsOverview перестраивает только при его просмотре (а не при нажатии на другие представления в приложении)?

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () => Future.value(false),
      child: new Scaffold(
          appBar: AppBar(
              leading: Container(),
              /*title: Text('Chat.Here', style: TextStyle(color: Colors.white),),
            leading: Container(),
            backgroundColor: Colors.orange[600],
            */

              flexibleSpace: SafeArea(
                  child: new TabBar(indicatorWeight: 4.0,indicatorColor: Colors.white, controller: controller, tabs: <Tab>[
                new Tab(
                  text: 'Gruppen',
                  icon: Icon(Icons.group),
                ),
                new Tab(
                  text: 'Chats',
                  icon: Icon(Icons.chat_bubble),
                ),
                new Tab(
                  text: 'Einstellungen',
                  icon: Icon(Icons.settings),
                )
              ]))),

          body: new TabBarView(controller: controller, children: <Widget>[
            new first.GroupsOverview(),
            new second.ChatsOverview(),
            new third.Settings()
          ])),
    );
  }

0 ответов

Другие вопросы по тегам