美文网首页Flutterflutter
Flutter Widget => BottomAppBar

Flutter Widget => BottomAppBar

作者: charmingcheng | 来源:发表于2019-07-25 11:26 被阅读0次

    BottomAppBar 是 底部工具栏的意思,这个要比BottomNavigationBar widget灵活很多,可以放置文字和图标,当然也可以放置容器。
    BottomAppBar的常用属性:

    color:这个不用多说,底部工具栏的颜色。
    shape:设置底栏的形状,一般使用这个都是为了和floatingActionButton融合,所以使用的值都是CircularNotchedRectangle(),有缺口的圆形矩形。

    child : 里边可以放置大部分Widget,让我们随心所欲的设计底栏。

    image

    代码

    import 'package:flutter/material.dart';
    void main() => runApp(MyApp());
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return new MaterialApp(
          title: "flutter demo",
          theme: ThemeData(
              primarySwatch: Colors.lightBlue //primarySwatch :现在支持18种主题样本。
              ),
          home: _home(),
        );
      }
    }
    class _home extends StatefulWidget {
      @override
      State<StatefulWidget> createState() {
        // TODO: implement createState
        return _homeState();
      }
    }
    class _homeState extends State<_home> {
      List<Widget> _viewList; //创建视图数组
      int _index = 0; //数组索引,通过改变索引值改变视图
      @override
      void initState() {
        super.initState();
        _viewList = List();
        _viewList..add(EachView("HOME"))..add(EachView("CLOCK"));
      }
      _openNewPage() {
        Navigator.of(context)
            .push(MaterialPageRoute(builder: (BuildContext context) {
          return EachView("new Pager");
        }));
      }
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return new Scaffold(
          floatingActionButton: FloatingActionButton(
              onPressed: _openNewPage,
              child: Icon(
                Icons.add,
                color: Colors.white,
              )),
          floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
          //和底栏进行融合
          bottomNavigationBar: BottomAppBar(
            color: Colors.lightBlue, //底部工具栏的颜色。
            shape: CircularNotchedRectangle(),
            //设置底栏的形状,一般使用这个都是为了和floatingActionButton融合,
            // 所以使用的值都是CircularNotchedRectangle(),有缺口的圆形矩形。
            child: Row(
              //里边可以放置大部分Widget,让我们随心所欲的设计底栏
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              mainAxisSize: MainAxisSize.max,
              children: <Widget>[
                IconButton(
                  icon: Icon(
                    Icons.home,
                    color: Colors.white,
                  ),
                  color: Colors.white,
                  onPressed: () {
                    setState(() {
                      _index = 0;
                    });
                  },
                ),
                IconButton(
                  icon: Icon(Icons.access_alarms, color: Colors.white),
                  color: Colors.white,
                  onPressed: () {
                    setState(() {
                      _index = 1;
                    });
                  },
                ),
              ],
            ),
          ),
          body: _viewList[_index],
        );
      }
    }
    //子页面
    //代码中设置了一个内部的_title变量,这个变量是从主页面传递过来的,然后根据传递过来的具体值显示在APP的标题栏和屏幕中间。
    class EachView extends StatefulWidget {
      String _title;
      EachView(this._title);
      @override
      _EachViewState createState() => _EachViewState();
    }
    class _EachViewState extends State<EachView> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title: Text(widget._title)),
          body: Center(child: Text(widget._title)),
        );
      }
    }
    

    相关文章

      网友评论

        本文标题:Flutter Widget => BottomAppBar

        本文链接:https://www.haomeiwen.com/subject/qkqmnqtx.html