Flutter 颤振-持续导航栏

Flutter 颤振-持续导航栏,flutter,bottomnavigationview,Flutter,Bottomnavigationview,我希望你做得很好 贝娄,你会发现一些代码,我正在使用的测试。对于那些使用谷歌邮件应用程序的人,我正试图复制同样的内容。它有一个底部导航栏,始终保持在屏幕上,即使我使用抽屉并选择其中一个选项 现在,我得到了这个错误。我不知道如何修理它。非常感谢你的帮助 对null调用了方法“[]”。 收件人:空 已尝试呼叫: //Home import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import

我希望你做得很好

贝娄,你会发现一些代码,我正在使用的测试。对于那些使用谷歌邮件应用程序的人,我正试图复制同样的内容。它有一个底部导航栏,始终保持在屏幕上,即使我使用抽屉并选择其中一个选项

现在,我得到了这个错误。我不知道如何修理它。非常感谢你的帮助

对null调用了方法“[]”。 收件人:空 已尝试呼叫:

//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();
  }
}