如何在颤动中一起创建抽屉和底部导航栏?

如何解决如何在颤动中一起创建抽屉和底部导航栏?

我到处搜索,但我找不到如何在Flutter中一起使用抽屉和底部导航栏?

我创建了两个 ui,因为两者都显示良好。主要问题是我可以在 body 中导航抽屉的项目类或底部导航栏类。如果单击底部项目,则应加载底部类,当单击抽屉项目时,应加载其类。

我的代码在下面,如果有任何错误,请查看代码或建议我任何示例。提前致谢!!

  '''
  //for setting title name of side bar items
    class DrawerItem {
      String title;
      IconData icon;
    
      DrawerItem(this.title,this.icon);
    }
    
    //for setting title name of bottom bar items
    // class widgetBottomItems{
    //   String title;
    //   IconData icon;
    //   widgetBottomItems(this.title,this.icon);
    // }
    
    class DrawerSetting extends StatefulWidget {
      final drawerItems = [
        new DrawerItem("Add Manual FD",Icons.add),new DrawerItem("Zero Balance Portfolio",Icons.alarm),new DrawerItem("Message",Icons.message),new DrawerItem("My Info & Setting",Icons.settings),new DrawerItem("Support",Icons.help),new DrawerItem("FAQ",Icons.book_outlined),new DrawerItem("Contact Us",Icons.contact_phone_outlined),new DrawerItem("logout",Icons.logout)
      ];
    
      @override
      State<StatefulWidget> createState() {
        return new HomePageState();
      }
    }
    
    class HomePageState extends State<DrawerSetting> {
      final Color myColor = Color(0xFF15A2EB);
      final Color myColorLightGray = Color(0xFF989E9E);
      final Color text_Semi_Black_Color = Color(0xFF414B51);
      final Color text_gray_color = Color(0xFF70787C);
    
      int _selectedDrawerIndex = 0;
    
      //bottom navigation
      int _selectedindex = 0;
      var _screens = [
        discoverScreen(),HomeFragment(),PartneRSScreen(),// HistoryScreen(),AppHistoryTabScreen(),];
      static const TextStyle optionStyle = TextStyle(
        fontSize: 16,fontWeight: FontWeight.bold,color: Colors.red,fontFamily: "verdana_regular",);
      static const List<Widget> widgetBottomItems = <Widget>[
        Text(
          'discover',style: optionStyle,),Text(
          'Portfolio',Text(
          'Partners',Text(
          'History',];
    
      String currentProfilePic =
          "https://service2home.in/wp-content/uploads/2021/01/rakesh.jpg";
    
      _getDrawerItemWidget(int pos) {
        switch (pos) {
          case 0:
            return new AddManualFdFragment();
            break;
          case 1:
            return new ZeroBalancePortFolioScreen();
            break;
          case 2:
            return MessageFragment();
            break;
          case 3:
            return new UserProfileScreen("drawer");
            break;
          case 4:
            return new SupportFragment();
            break;
          case 5:
            return new FAQFragment();
            break;
          case 6:
            return new ContactUsScreen();
            break;
          case 7:
            SystemNavigator.pop();
            //exit(0);
            break;
        }
      }
    
      //for bottom items
      void _onItemTapped(int index) {
        setState(() {
          _selectedindex = index;
          //calling both items
          // _onSelectItem(index);
        });
      }
    
      //for drawer items
      _onSelectItem(int index) {
        setState(() => _selectedDrawerIndex = index);
        Navigator.of(context).pop(); // close the drawer
      }
    
      @override
      Widget build(BuildContext context) {
        List<Widget> drawerOptions = [];
        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,style: TextStyle(
                fontSize: 16,color: myColorLightGray,selected: i == _selectedDrawerIndex,onTap: () => _onSelectItem(i),));
        }
    
        //on backpress return to home screen,you can use it for drawer items
        return WillPopScope(
          onWillPop: () {
            if (_selectedindex != 0) {
              setState(() {
                _selectedindex = 0;
              });
              _getDrawerItemWidget(_selectedindex);
            } else {
              Navigator.pop(context,true);
            }
            return;
          },child: Scaffold(
            appBar: new AppBar(
              title: new Text(
                widget.drawerItems[_selectedDrawerIndex].title,style: TextStyle(
                    color: Colors.white,fontSize: 16,fontFamily: "verdana_regular"),drawer: new Drawer(
              child: SingleChildScrollView(
                child: new Column(
                  children: [
                    UserAccountsDrawerHeader(
                      currentAccountPicture: Container(
                        child: new GestureDetector(
                          child: new CircleAvatar(
                            backgroundImage: new NetworkImage(currentProfilePic),onTap: () => Navigator.push(
                            context,MaterialPageRoute(
                                builder: (context) => UserProfileScreen("header")),accountName: new Text(
                        "Rakesh saini",style: TextStyle(
                          fontSize: 18,color: Colors.black,accountEmail: new Text(
                        "rakesh.ollosoft@gmail.com",style: TextStyle(
                          fontSize: 15,color: Colors.white,Column(children: drawerOptions)
                  ],body: /*_screens[_selectedindex]*/
                _getDrawerItemWidget(_selectedDrawerIndex),//bottom navigation bar
            bottomNavigationBar: BottomNavigationBar(
              type: BottomNavigationBarType.fixed,backgroundColor: myColor,items: const <BottomNavigationBarItem>[
                BottomNavigationBarItem(
                  icon: Icon(Icons.search),label: 'discover',BottomNavigationBarItem(
                  icon: ImageIcon(
                    Assetimage("assets/images/briefcase.png"),// color: Colors.grey,label: 'Portfolio',BottomNavigationBarItem(
                  icon: ImageIcon(
                    Assetimage("assets/images/handshake.png"),label: 'Partners',BottomNavigationBarItem(
                  icon: Icon(Icons.history),label: 'History',],currentIndex: _selectedindex,selectedItemColor: Colors.white,unselectedItemColor: myColorLightGray,onTap: _onItemTapped,// bottomNavigationBar: BottomNavigationBar(),);
      }
    
      //go to news detail page
      void goToProfile_Screen(BuildContext ctx) {
        Navigator.of(ctx).push(
          MaterialPageRoute(
            builder: (_) {
              return UserProfileScreen("drawer");
            },);
      }
    }
  
  '''

解决方法

首先我的朋友这是一个非常糟糕的代码。

在下面的这段代码中,我有你想要的两个东西,你可以按照这个路径

FooterNavigationBar 只是一个有状态的小部件,有一些行和容器,没什么特别的

Scaffold(
  key: _scaffoldKey,bottomNavigationBar: FooterNavigationBar(),drawer: AppDrawer(
    scaffoldKey: _scaffoldKey,),backgroundColor: CBase().backgroundColor,body: ......
       InkWell(
          onTap: () {
             _scaffoldKey.currentState.openDrawer();
             },child: SvgPicture.asset(
              "images/DrawerIcon.svg"),...............

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?