首页 > 解决方案 > 如何在颤动中从tab1(不是重建tab2)更改tab2的状态

问题描述

当我尝试从 tab1 更改 tab2 的状态时遇到问题

为此,我已经有 tab1 和 tab2 的类来保存用户数据:

AutomaticKeepAliveClientMixin<...>{...}
...
@override
bool get wantKeepAlive => true;

问题是当用户更改 tab1 中的选项时,您只需要更改 tab2 的状态(而不是重建),以便仅使用新数据更新列表 var

我创建了一个 tabcontroller 以便 tab2 在用户访问该视图时更改其状态但它不起作用


    class _medState extends State<HomeMed> with SingleTickerProviderStateMixin{
    
      TabController _tabController;
      var _context;
      
      @override
      void initState() {
        super.initState();
        _tabController = TabController(vsync: this, length: 2);
    
        _tabController.addListener(_handleTabSelection);
      }
    
      void _handleTabSelection() {
        if (_tabController.indexIsChanging) {
          switch (_tabController.index) {
            case 1: //tab2
              setState(() {
                        });  //this not update tab2 view
              break;
          }
        }
      }
    
      @override
      void dispose() {
        _tabController.dispose();
        super.dispose();
      }
      ...

标签: flutterflutter-layoutflutter-dependenciesflutter-webflutter-animation

解决方案


setState页面调用HomeMed应该重建整个小部件,因此两者都将Tab1重建Tab2。如果您只有 Tab2 的一部分想要重建,最好使用ValueNotifierService


推荐阅读