您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“flutter如何實現底部導航欄切換”,內容詳細,步驟清晰,細節處理妥當,希望這篇“flutter如何實現底部導航欄切換”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
思路:MaterialApp是提供了bottomnavigationbar的,可以使用,這個已經提供了的widget,再利用每次點擊tab的時候使用set state方法來更新屏幕,切換中間的body的widget;
main文件:
import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_app1/MyBottomNavigationBar.dart'; void main(){ runApp(new MyApp()); } class MyApp extends StatelessWidget{ @override Widget build(BuildContext context) { // TODO: implement build // throw UnimplementedError(); return new MaterialApp( title:" MyNavigationBar", home: new MyBottomNavigationBar(), ); } }
MyBottomNavigationBar():
import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_app1/pages/AddScreen.dart'; import 'package:flutter_app1/pages/HomeScreen.dart'; import 'package:flutter_app1/pages/PersonScreen.dart'; class MyBottomNavigationBar extends StatefulWidget{ @override MyNavigationBarState createState() { // TODO: implement createState // throw UnimplementedError(); return new MyNavigationBarState(); } } class MyNavigationBarState extends State<MyBottomNavigationBar>{ List<Widget> pagesList=[]; int cunrrentIndex=0; @override void initState() { pagesList=pagesList..add(new HomeScreen()) ..add(new AddScreen()) ..add(new PersonScreen()); } @override Widget build(BuildContext context) { // TODO: implement build // throw UnimplementedError(); return new Scaffold( appBar: new AppBar( title: new Text("MyNavigationBar"), ), body: pagesList[cunrrentIndex], bottomNavigationBar: new BottomNavigationBar( items: [ new BottomNavigationBarItem( icon: new Icon(Icons.home), label:"Home" ), new BottomNavigationBarItem( icon: new Icon(Icons.add), label:"Add" ), new BottomNavigationBarItem( icon: new Icon(Icons.person), label:"Person" ) ], onTap:(index){ setState(() { cunrrentIndex=index; }); }, currentIndex: cunrrentIndex, ) ); } }
addScreen:
import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class AddScreen extends StatelessWidget{ @override Widget build(BuildContext context) { // TODO: implement build // throw UnimplementedError(); return new Scaffold( appBar: new AppBar( title: new Text("AddPage"), ), body: new Center( child: new Text("Add"), ), ); } }
HomeScreen
import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class HomeScreen extends StatelessWidget{ @override Widget build(BuildContext context) { // TODO: implement build // throw UnimplementedError(); return new Scaffold( appBar: new AppBar( title: new Text("HomePage"), ), body: new Center( child:Image.asset("images/cat.png"), ), ); } }
PersonScreen :
import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class PersonScreen extends StatelessWidget{ @override Widget build(BuildContext context) { // TODO: implement build // throw UnimplementedError(); return new Scaffold( appBar: new AppBar( title: new Text("PersonPage"), ), body: new Center( child: new Text("Person"), ), ); } }
最終效果:
讀到這里,這篇“flutter如何實現底部導航欄切換”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。