Flutter 颤振-持续导航栏
我希望你做得很好 贝娄,你会发现一些代码,我正在使用的测试。对于那些使用谷歌邮件应用程序的人,我正试图复制同样的内容。它有一个底部导航栏,始终保持在屏幕上,即使我使用抽屉并选择其中一个选项 现在,我得到了这个错误。我不知道如何修理它。非常感谢你的帮助 对null调用了方法“[]”。 收件人:空 已尝试呼叫:Flutter 颤振-持续导航栏,flutter,bottomnavigationview,Flutter,Bottomnavigationview,我希望你做得很好 贝娄,你会发现一些代码,我正在使用的测试。对于那些使用谷歌邮件应用程序的人,我正试图复制同样的内容。它有一个底部导航栏,始终保持在屏幕上,即使我使用抽屉并选择其中一个选项 现在,我得到了这个错误。我不知道如何修理它。非常感谢你的帮助 对null调用了方法“[]”。 收件人:空 已尝试呼叫: //Home import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import
//Home
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:persistent_bottom_nav_bar/persistent-tab-view.dart';
import 'myDrawer_Widget.dart';
class HomePage extends StatefulWidget {
HomePage ({Key key}) : super(key : key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: new MyMenu(),
appBar: new AppBar(
title: new Text('Home Page'),
),
body: Column(
children: [
Expanded(
child: Text("Home Page")
),
],
),
// bottomNavigationBar: ,
);
throw UnimplementedError();
}
}
//我的抽屉
进口“包装:颤振/cupertino.dart”;
进口“包装:颤振/材料.省道”;
导入“View1.dart”;
导入“View2.dart”;
导入“View3.dart”;
导入“View4.dart”;
类MyMenu扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
回程抽屉(
标高:5.0,
子:列(
儿童:[
扩大(
弹性:1,
子:容器(
子项:UserAccountsDrawerHeader()
),
),
扩大(
弹性:4,
子:ListView(
//填充:EdgeInsets.zero,
儿童:[
列表砖(
是的,
//tileColor:颜色。浅蓝色[300],
标题:新行(子行:
[新文本(“视图1”,
样式:新文本样式(
颜色:颜色。蓝色[900],
fontWeight:fontWeight.bold,fontSize:13.0),)
],
mainAxisAlignment:mainAxisAlignment.start,),
onTap:(){
Navigator.pop(上下文);
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>View1(),);
}),
列表砖(
是的,
前导:图标(Icons.home),
标题:变换(变换:矩阵4.translationValues(DistanceEntertextandIcon,alignementTextWithIcon,0.0),
子项:新行(子项:
[新文本(“视图2”,
样式:新文本样式(
颜色:颜色,黑色,
fontWeight:fontWeight.normal,fontSize:13.0),)
],
mainAxisAlignment:mainAxisAlignment.start,)
),
onTap:(){
Navigator.pop(上下文);
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>View2(),);
}
),
分隔符(),
列表砖(
是的,
//tileColor:颜色。浅蓝色[300],
标题:新行(子项:[新文本(“视图3”),
样式:新文本样式(
颜色:颜色。蓝色[900],
fontWeight:fontWeight.bold,fontSize:13.0),)
],mainAxisAlignment:mainAxisAlignment.start,),
onTap:(){
Navigator.pop(上下文);
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>View3(),);
}
),
分隔符(),
列表砖(
是的,
//tileColor:颜色。浅蓝色[300],
标题:新行(子项:[新文本(“视图4”),
样式:新文本样式(
颜色:颜色。蓝色[900],
fontWeight:fontWeight.bold,fontSize:13.0),
)
],
mainAxisAlignment:mainAxisAlignment.start,),
onTap:(){
Navigator.pop(上下文);
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>View4(),);
}
),
],
填充:所有边缘设置(0.0),
),
),
],
),
);
}
}
//persistentBottomNavBar
进口“包装:颤振/材料.省道”;
导入“View1.dart”;
导入“View2.dart”;
导入“View3.dart”;
类PersistentBottomNavBar扩展StatefulWidget{
@凌驾
_PersistentBottomNavBarState createState()=>\u PersistentBottomNavBarState();
}
类_PersistentBottomNavBarState扩展状态{
final Key keyOne=PageStorageKey('View1');
final Key keyTwo=PageStorageKey('View2');
final Key Key三=PageStorageKey('View3');
int currentTab=0;
视图1一;
视图2二;
视图3三;
列表页;
窗口小部件当前页面;
final PageStorageBucket bucket=PageStorageBucket();
@凌驾
void initState(){
1=视图1(
键:键一,
);
2=视图2(
键:键二,
);
三=视图3(
键:键三,
);
页码=[1,2,3,];
当前页面=一个;
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:页面存储(
孩子:当前页面,
桶:桶,
),
底部导航栏:底部导航栏(
currentIndex:currentTab,
onTap:(int索引){
设置状态(){
currentTab=索引;
currentPage=页面[索引];
});
},
类型:BottomNavigationBarType.fixed,
项目:[
底部导航气压计(
图标:currentTab==0?图标(Icons.home,大小:40.0):图标(Icons.home,大小:40.0),
标题:文本(“视图1”,
样式:currentTab==0?
TextStyle(颜色:(Colors.blue),字体大小:12.0):
文本样式(颜色:(Colors.black),字体
//Main
import 'package:flutter/material.dart';
import 'Home.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Persistent Bottom Navigation Bar example project',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage(),
initialRoute: '/',
);
}
}
//MyDrawer
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'View1.dart';
import 'View2.dart';
import 'View3.dart';
import 'View4.dart';
class MyMenu extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Drawer(
elevation: 5.0,
child: Column(
children: [
Expanded(
flex: 1,
child: Container(
child: UserAccountsDrawerHeader()
),
),
Expanded(
flex: 4,
child: ListView(
//padding: EdgeInsets.zero,
children: [
ListTile(
dense: true,
//tileColor: Colors.lightBlue[300],
title: new Row(children: <Widget>
[new Text("View1",
style: new TextStyle(
color: Colors.blue[900],
fontWeight: FontWeight.bold, fontSize: 13.0),)
],
mainAxisAlignment: MainAxisAlignment.start,),
onTap: () {
Navigator.pop(context);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => View1(),));
}),
ListTile(
dense: true,
leading: Icon(Icons.home),
title: Transform(transform: Matrix4.translationValues(distanceEntreTextAndIcon, alignementTextWithIcon, 0.0),
child: new Row(children: <Widget>
[new Text("View2",
style: new TextStyle(
color: Colors.black,
fontWeight: FontWeight.normal, fontSize: 13.0),)
],
mainAxisAlignment: MainAxisAlignment.start,)
),
onTap: () {
Navigator.pop(context);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => View2(),));
}
),
Divider(),
ListTile(
dense: true,
// tileColor: Colors.lightBlue[300],
title: new Row(children: <Widget>[new Text("View3",
style: new TextStyle(
color: Colors.blue[900],
fontWeight: FontWeight.bold, fontSize: 13.0),)
], mainAxisAlignment: MainAxisAlignment.start,),
onTap: () {
Navigator.pop(context);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => View3(),));
}
),
Divider(),
ListTile(
dense: true,
// tileColor: Colors.lightBlue[300],
title: new Row(children: <Widget>[new Text("View4",
style: new TextStyle(
color: Colors.blue[900],
fontWeight: FontWeight.bold, fontSize: 13.0),
)
],
mainAxisAlignment: MainAxisAlignment.start,),
onTap: () {
Navigator.pop(context);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => View4(),));
}
),
],
padding: EdgeInsets.all(0.0),
),
),
],
),
);
}
}
//persistentBottomNavBar
import 'package:flutter/material.dart';
import 'View1.dart';
import 'View2.dart';
import 'View3.dart';
class PersistentBottomNavBar extends StatefulWidget {
@override
_PersistentBottomNavBarState createState() => _PersistentBottomNavBarState();
}
class _PersistentBottomNavBarState extends State<PersistentBottomNavBar> {
final Key keyOne = PageStorageKey('View1');
final Key keyTwo = PageStorageKey('View2');
final Key keyThree = PageStorageKey('View3');
int currentTab = 0;
View1 one;
View2 two;
View3 three;
List<Widget> pages;
Widget currentPage;
final PageStorageBucket bucket = PageStorageBucket();
@override
void initState() {
one = View1(
key: keyOne,
);
two = View2(
key: keyTwo,
);
three = View3(
key: keyThree,
);
pages = [one, two, three, ];
currentPage = one;
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageStorage(
child: currentPage,
bucket: bucket,
),
bottomNavigationBar: BottomNavigationBar(
currentIndex: currentTab,
onTap: (int index) {
setState(() {
currentTab = index;
currentPage = pages[index];
});
},
type: BottomNavigationBarType.fixed,
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: currentTab==0? Icon(Icons.home,size: 40.0):Icon(Icons.home,size: 40.0),
title: Text('View1',
style: currentTab==0?
TextStyle(color:(Colors.blue ), fontSize: 12.0):
TextStyle(color:(Colors.black ), fontSize: 12.0)) ),
BottomNavigationBarItem(
icon: currentTab==1? Icon(Icons.save,size: 40.0):Icon(Icons.save,size: 40.0),
title: Text('View2',
style: currentTab==1?
TextStyle(color:(Colors.blue ), fontSize: 12.0):
TextStyle(color:(Colors.black ), fontSize: 12.0)) ),
BottomNavigationBarItem(
icon: currentTab==2? Icon(Icons.insert_invitation,size: 40.0):Icon(Icons.insert_invitation,size: 40.0),
title: new Text("View3",
style: currentTab==2?
TextStyle(color:(Colors.blue ), fontSize: 12.0):
TextStyle(color:(Colors.black ), fontSize: 12.0)) ),
],
),
);
}
}
//View1
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:persistent_bottom_nav_bar/persistent-tab-view.dart';
import 'myDrawer_Widget.dart';
class View1 extends StatefulWidget {
View1 ({Key key}) : super(key : key);
@override
_View1State createState() => _View1State();
}
class _View1State extends State<View1> {
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: new MyMenu(),
appBar: new AppBar(
title: new Text('View1'),
),
body: Column(
children: [
Expanded(
child: Text("View1")
),
],
),
bottomNavigationBar: PersistentBottomNavBar(),
);
throw UnimplementedError();
}
}
class BottomNavB extends StatelessWidget {
@override
Widget build(BuildContext context) {
return PersistentBottomNavBar();
}
void initState() {}
}
//View2
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'myDrawer_Widget.dart';
class View2 extends StatefulWidget {
View2 ({Key key}) : super(key : key);
@override
_View2State createState() => _View2State();
}
class _View2State extends State<View2> {
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: new MyMenu(),
appBar: new AppBar(
title: new Text('View2'),
),
body: Column(
children: [
Expanded(
child: Text("View2")
),
],
),
//bottomNavigationBar: MyBottomAppBar(),
);
throw UnimplementedError();
}
}
//View3
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'myDrawer_Widget.dart';
class View3 extends StatefulWidget {
View3 ({Key key}) : super(key : key);
@override
_View3State createState() => _View3State();
}
class _View3State extends State<View3> {
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: new MyMenu(),
appBar: new AppBar(
title: new Text('View3'),
),
body: Column(
children: [
Expanded(
child: Text("View3")
),
],
),
//bottomNavigationBar: MyBottomAppBar(),
);
throw UnimplementedError();
}
}
//View4
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'myDrawer_Widget.dart';
class View4 extends StatefulWidget {
View4 ({Key key}) : super(key : key);
@override
_View4State createState() => _View4State();
}
class _View4State extends State<View4> {
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: new MyMenu(),
appBar: new AppBar(
title: new Text('View4'),
),
body: Column(
children: [
Expanded(
child: Text("View4")
),
],
),
//bottomNavigationBar: MyBottomAppBar(),
);
throw UnimplementedError();
}
}
//View5
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'myDrawer_Widget.dart';
class View5 extends StatefulWidget {
View5 ({Key key}) : super(key : key);
@override
_View5State createState() => _View5State();
}
class _View5State extends State<View5> {
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: new MyMenu(),
appBar: new AppBar(
title: new Text('View4'),
),
body: Column(
children: [
Expanded(
child: Text("View4")
),
],
),
//bottomNavigationBar: MyBottomAppBar(),
);
throw UnimplementedError();
}
}