我正在尝试在特定页面上显示侧面导航栏。下面的代码工作正常,但在登录屏幕上显示了一个额外的AppBar(它具有自己的AppBar)。我希望在此登录屏幕上隐藏导航栏。任何帮助将不胜感激。使用return Navigator.push(context, MaterialPageRoute(builder: (context) => Login()));
会使应用程序崩溃。并使用return new Login();
创建两个应用栏。
import 'package:flutter/material.dart';
import 'package:semester_project/friends.dart';
import 'package:semester_project/login_page.dart';
import 'package:semester_project/user_profile.dart';
import 'package:semester_project/registration.dart';
class Homepage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'NavigationDrawer Demo',
theme: new ThemeData(
primarySwatch: Colors.red,
),
home: new HomePage(),
);
}
}
class DrawerItem {
String title;
IconData icon;
DrawerItem(this.title, this.icon);
}
class HomePage extends StatefulWidget {
final drawerItems = [
new DrawerItem("Home", Icons.home),
new DrawerItem("Logout", Icons.power_settings_new),
new DrawerItem("Profile Settings", Icons.settings),
];
@override
State<StatefulWidget> createState() {
return new HomePageState();
}
}
class HomePageState extends State<HomePage> {
int _selectedDrawerIndex = 0;
_getDrawerItemWidget(int pos) {
switch (pos) {
case 0:
return new Home();
case 1:
return new Login(); //creates two app bars
case 2:
return new MyAccountSetting();
default:
return new Text("Error");
}
}
_onSelectItem(int index) {
setState(() => _selectedDrawerIndex = index);
Navigator.of(context).pop(); // close the drawer
}
@override
Widget build(BuildContext context) {
var drawerOptions = <Widget>[];
for (var i = 0; i < widget.drawerItems.length; i++) {
var d = widget.drawerItems[i];
drawerOptions.add(
new ListTile(
leading: new Icon(d.icon),
title: new Text(d.title),
selected: i == _selectedDrawerIndex,
onTap: () => _onSelectItem(i),
)
);
}
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.drawerItems[_selectedDrawerIndex].title),
),
drawer: new Drawer(
child: new Column(
children: <Widget>[
new UserAccountsDrawerHeader(
accountName: new Text("Syed Shehroz Sohail"), accountEmail: null),
new Column(children: drawerOptions)
],
),
),
body: _getDrawerItemWidget(_selectedDrawerIndex),
);
}
}
不要使用return只是
Navigator.push(context,MaterialPageRoute(builder:(context)=> Login()));