Flutter學(xué)習(xí)(一)

1.在水平布局時,如果右半部分布局需要填充滿剩余空間, 使用Expanded
//在Expanded 中使用Column可以使右邊布局從頂部開始排練,否則控件會從中間顯示

Widget buildRightUi() {
    return new Expanded(
      child: new Column(
        children: <Widget>[
          new Image.asset(
            "images/bg.jpeg",
          ),
        ],
      ),
    );
  }

2.AppBar
actions可以添加控件
PopupMenuButton 菜單欄

 new PopupMenuButton<Choice>(onSelected: _choose,itemBuilder: (BuildContext context){
            return choices.skip(2).map((Choice choice){
              return new PopupMenuItem<Choice>(child: Text(choice.title),value: choice,);
            }).toList();
          })

3.TabBar 導(dǎo)航欄可切換控件 以及BottomNavigationBar 底部導(dǎo)航欄菜單 底部導(dǎo)航欄通常與Scaffold結(jié)合使用

class TabBarPage extends StatefulWidget {
  TabBarPageState createState() => TabBarPageState();
}

class TabBarPageState extends State<TabBarPage>{
  int curIndex = 1;

  void _setChooseItem(int index){
    setState(() {
      curIndex = index;
    });
  }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new DefaultTabController(
        length: choices.length,
        child: new Scaffold(
          appBar: new AppBar(
            title: Text("tabViewPage"),
            bottom: new TabBar(
                isScrollable: true,//可滑動在Tab過多時,可以滑動保證文字全部顯示完全
                tabs: choices.map((Choice choice) {
                  return new Tab(
                    text: choice.title,
                    icon: new Icon(choice.icon),
                  );
                }).toList()),
          ),
          body: new TabBarView(
              children: choices.map((Choice choice) {
                return new Card(
                    child: new Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: <Widget>[
                        new Text(choice.title,style: new TextStyle(fontWeight: FontWeight.bold,fontSize: 20),),
                        new Container(
                          margin: EdgeInsets.only(top: 10),
                          child: new Icon(choice.icon,size: 80,),
                        )
                      ],
                    ));
              }).toList()),
          bottomNavigationBar: BottomNavigationBar(items: <BottomNavigationBarItem>[
            BottomNavigationBarItem(title: Text("home"),icon: Icon(Icons.home)),
            BottomNavigationBarItem(title: Text("business"),icon: Icon(Icons.business)),
            BottomNavigationBarItem(title: Text("school"),icon: Icon(Icons.school)),
          ],fixedColor: Colors.deepPurple,currentIndex: curIndex,onTap: _setChooseItem,),
        ));
  }
}
class Choice {
  const Choice({this.title, this.icon});

  final String title;
  final IconData icon;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'CAR', icon: Icons.directions_car),
  const Choice(title: 'BICYCLE', icon: Icons.directions_bike),
  const Choice(title: 'BOAT', icon: Icons.directions_boat),
  const Choice(title: 'BUS', icon: Icons.directions_bus),
  const Choice(title: 'TRAIN', icon: Icons.directions_railway),
  const Choice(title: 'WALK', icon: Icons.directions_walk),
];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Dart是什么? Dart是一門新的編程語言,如同JAVA、PHP一樣,是為了解決編寫應(yīng)用程序中的一些實際問題而...
    浩之然閱讀 819評論 0 1
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,334評論 0 17
  • 項目演示github地址 Flutter for Android 開發(fā)者 用Android布局的角度來看Flutt...
    wayDevelop閱讀 6,319評論 1 7
  • 前言 本文的目的是為了讓讀者掌握不同布局類Widget的布局特點,分享一些在實際使用過程遇到的一些問題,在《Flu...
    xqqlv閱讀 5,409評論 0 18
  • Android UI相關(guān)開源項目庫匯總OpenDigg 抽屜菜單MaterialDrawer ★7337 - 安卓...
    黃海佳閱讀 8,829評論 3 77

友情鏈接更多精彩內(nèi)容