如何在侧面屏幕中显示侧面导航栏?

问题描述 投票:0回答:1

我正在尝试在特定页面上显示侧面导航栏。下面的代码工作正常,但在登录屏幕上显示了一个额外的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),
    );
  }
}
dart flutter-layout
1个回答
0
投票

不要使用return只是

Navigator.push(context,MaterialPageRoute(builder:(context)=> Login()));

© www.soinside.com 2019 - 2024. All rights reserved.