【问题标题】:why flutter BottomNavigationBar changes the icon but does not change the page?为什么flutter BottomNavigationBar 改变图标但不改变页面?
【发布时间】:2020-09-08 12:52:21
【问题描述】:

我是编码和颤振的新手,我一直在尝试让我的 bottomNavigationBar 将页面从 home page 更改为 chatroom 但我尝试的任何方法都不起作用,我看了很多视频,但他们的 bottomNavigationBar 在里面他们的身体,当我应用他们正在做的事情时,我在我的padding 后面的身体和return Scaffold( 在我的appBar: 之前的这个括号下得到了红线图像链接在代码的末尾强>

     import 'package:flutter/material.dart';
    import 'package:flutter/cupertino.dart';
    import 'package:flutter_rating_bar/flutter_rating_bar.dart';
    import 'package:trading/core/const.dart';
    import 'package:trading/models/apartment_model.dart';
    import 'package:trading/pages/chat.dart';
    import 'package:trading/pages/detail_page.dart';

    class Homepage extends StatefulWidget {
      @override
      _HomepageState createState() => _HomepageState();
    }

    class _HomepageState extends State<Homepage> {
      var data = ApartmentModel.list;

      int _selectedIndex = 0;
       List<Widget> `enter code here`pages=[
       Homepage(),

       Chatroom(),

        ];




      @override
      Widget build(BuildContext context) {
        return Scaffold(


          appBar: AppBar(
            backgroundColor: Colors.transparent,
            elevation: 0,
            title: Text(
              "find your product",
              style: TextStyle(color: Colors.black87, fontWeight: FontWeight.bold),
            ),
            actions: <Widget>[
              IconButton(
                  icon: Icon(
                    Icons.search,
                    color: Colors.black38,
                  ),
                  onPressed: () {}),
              IconButton(
                  icon: Icon(
                    Icons.filter_list,
                    color: Colors.black38,
                  ),
                  onPressed: () {}),
            ],

          ),



bottomNavigationBar: 

   BottomNavigationBar(
      showSelectedLabels: false,
      showUnselectedLabels: false,
      type: BottomNavigationBarType.fixed,
      selectedItemColor: AppColors.stylecolor,
      unselectedItemColor: Colors.black38,
        currentIndex: _selectedIndex,




      items: [
        BottomNavigationBarItem(

            icon: Icon(Icons.home), title: Text("datsa")),
        BottomNavigationBarItem(

            icon: Icon(Icons.chat), title: Text("data"),),
        BottomNavigationBarItem(
            icon: Icon(Icons.person), title: Text("data")),
      ],

      ),


  body: 
     pages.elementAt(_selectedIndex),
  Padding(    
    padding: EdgeInsets.all(16.0),

    child:   

    Column(

      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Text(
          "65 result in your area",
          style: TextStyle(color: Colors.black38),
        ),
        Expanded(
          child: ListView.builder(

            physics: BouncingScrollPhysics(),
            itemCount: data.length,
            itemBuilder: (context, index) {
              return GestureDetector(
                  onTap: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (_) => DetailPage(
                          data[index]
                        ),
                      ),
                    );
                      },
                      child: _buildItem(context, index));
                },
              ),
            ), 
         //   Container(       child: _builBottomNavigationBar),
          ],

        ),

      ),

    );  
  }

here is a pic of the red line that I was saying

【问题讨论】:

    标签: flutter bottomnavigationview flutter-navigation flutter-appbar flutter-bottomnavigation


    【解决方案1】:

    您必须创建一个包含您的页面的Widgets 列表,并在body 中根据Selected Index 填充Widget

    例子:

    List<Widget> pages=[
      Dashboard(),
      Profile(),
      Settings(),
    ];
    

    然后在正文中将页面显示为:

    body:
       pages.elementAt(_selectedIndex),
    

    【讨论】:

    • 感谢您的回答,但这正是我之前尝试过的,在制作小部件并将我的页面放入其中之后,当我尝试将pages.elementAt(_selectedIndex), 放在正文中时,我在 my@987654328 下得到了红线@
    • @RastaMosi 确保页面可滚动。
    • 我的Homepage 是可滚动的,但我的Chatroom 只包含ScaffoldappBar。我必须在我的聊天室页面上添加一些东西吗?如果可能,请举例说明,因为我超级新。谢谢
    • @RastaMosi 你的应用不应该在scaffold 中有scaffoldscaffold 是一个顶级容器,所以在你的@987654338 中用Container 替换scaffold @ 和 Chatroom 页。
    • @Mohammad_Asef, @Adnankarim 非常感谢你们的帮助,但问题实际上是我的代码放置错误,在你提到脚手架之后,我检查了我的代码并观看了一个视频,意识到我是'不要将BottomNavigatorBar 放在我的**主文件**中。我仍然不知道这是否是使用它的正确方法,但现在它工作正常。
    【解决方案2】:

    body 最多只能占用一个小部件,如果您需要同时分配页面和填充,则必须使用一列

    【讨论】:

    • 谢谢你的回答,你的意思是我应该在正文中写一个专栏,然后把bottomNavigationBarPadding都放在里面吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 2020-06-27
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多