首页 文章

Flutter在其他页面上更改主appbar Headers

提问于
浏览
1

寻找一些帮助,在后续页面上更改AppBar title ,所以我是标签而一些不是 . MyApp 在我的应用的身份验证页面上定义 . 然后我转到一个新页面,其中包含选项卡,然后我有一些选项卡页面上的其他页面,我希望能够做的是,而不是在主要页面下放置另一个 AppBar ,我只想更改 title 当我在任何其他页面时, AppBar 的主要内容 .

任何想法如何做到这一点,我看到一个不合适的例子,因为我的标签设置不同,无法使它适合,想想也许有一种方法来最初定义 Headers ,以便我可以改变状态或东西,并改变 Headers .

对此有何想法或想法?

1 回答

  • 1

    您可以添加 TabController 并向其添加 listen ,以便在 Tab 之间切换时调用 setState ,并相应地更改 AppBar Headers .

    enter image description here

    import "package:flutter/material.dart";
    
    void main(){
      runApp(new MaterialApp(home:new MyApp(),
      ));
    }
    
    class MyApp extends StatefulWidget {
      @override
      _MyAppState createState() => new _MyAppState();
    }
    
    class _MyAppState extends State<MyApp> with TickerProviderStateMixin{
      final List<MyTabs> _tabs = [new MyTabs(title: "Teal",color: Colors.teal[200]),
      new MyTabs(title: "Orange",color: Colors.orange[200])
      ];
      MyTabs _myHandler ;
      TabController _controller ;
      void initState() {
        super.initState();
        _controller = new TabController(length: 2, vsync: this);
        _myHandler = _tabs[0];
        _controller.addListener(_handleSelected);
      }
      void _handleSelected() {
        setState(() {
           _myHandler= _tabs[_controller.index];
        });
      }
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          appBar: new AppBar(title: new Text(_myHandler.title),
            backgroundColor: _myHandler.color,
            bottom: new TabBar(
                controller: _controller,
                tabs: <Tab>[
                  new Tab(text: _tabs[0].title,),
                  new Tab(text: _tabs[1].title,)
                ],
          ),),
        );
      }
    }
    
    class MyTabs {
      final String title;
      final Color color;
      MyTabs({this.title,this.color});
    }
    

相关问题