Flutter 颤振底部导航栏图标颜色不变。是不是我的代码出现了某种设置状态错误或什么问题?

Flutter 颤振底部导航栏图标颜色不变。是不是我的代码出现了某种设置状态错误或什么问题?,flutter,flutter-layout,setstate,Flutter,Flutter Layout,Setstate,我是一个新手,事实上我不是一个程序员,但我正在尝试构建一个应用程序,它可以做一些基本的事情,比如登录页面、注册、用户数据显示到屏幕上,而且我还可以从我贴在底部导航栏的应用程序中看到彼此的个人资料,我从来没有想过这会很难通过。 我没有放弃,而是决定用谷歌四处搜索,得出不同的结果(其中有些结果很难理解,也很令人困惑)。 我正在尝试构建一个导航栏,以最低内存使用率(高效代码)路由到不同的页面 我很困惑,现在不知道该怎么办!请帮助另一个编码器(如果有人纠正了这个问题,我会认为自己是一个编码器,不要想太多

我是一个新手,事实上我不是一个程序员,但我正在尝试构建一个应用程序,它可以做一些基本的事情,比如登录页面、注册、用户数据显示到屏幕上,而且我还可以从我贴在底部导航栏的应用程序中看到彼此的个人资料,我从来没有想过这会很难通过。
我没有放弃,而是决定用谷歌四处搜索,得出不同的结果(其中有些结果很难理解,也很令人困惑)。 我正在尝试构建一个导航栏,以最低内存使用率(高效代码)路由到不同的页面
我很困惑,现在不知道该怎么办!请帮助另一个编码器(如果有人纠正了这个问题,我会认为自己是一个编码器,不要想太多)

@覆盖
小部件构建(构建上下文){
PageController_PageController=PageController();
最终列表选项卡=[FeedPage(),ListingPage(),SettingPage()];
int _selectedIndex=0;
void _onPageChanged(整型索引){
setState((){//我的setState有什么问题吗?
_selectedIndex=索引;
});
}
void\u onItemTapped(int\u selectedIndex){
_pageController.jumpToPage(_selectedIndex);
}
返回脚手架(
正文:页面视图(
控制器:_pageController,
子项:_选项卡,
onPageChanged:\u onPageChanged,//检查它
物理学:NeverscrollableScroll物理学(),
),
底部导航栏:底部导航栏(
currentIndex:\u selectedIndex,//我使用这个
onTap:\u未映射,
项目:[
底部导航气压计(
图标:图标(
我的家,
),
标题:文本(“主页”),
),
底部导航气压计(
图标:图标(
图标列表,
),
标题:文本(“列表”),
),
底部导航气压计(
图标:图标(
一个人,
),
标题:文本(“简介”),
),
],
),
);
}
}
//这是被窃听的代码吗?或者我的情绪有点不对劲,或者我很困惑

好的,我看到您在图标中没有提到颜色,因此页面更改允许我们应用相同的逻辑以避免混淆

让我们在最后的标签列表下面列出一个颜色列表

List<Color> selectedColor = [Colors.grey[900],Colors.grey[900],Colors.grey[900]];
现在,由于列表中提到的这一点,所有的颜色都是灰色的

void updateColor(int num){
    //here I am again declaring it because when I select the other color the list should //always remain same for the effect you want
    selectedColor = [Colors.grey[900],Colors.grey[900],Colors.grey[900]];
     setState(() {
       switch(num){
         case 1 : selectedColor[0] = Colors.Red;
                  break;
         case 2 : selectedColor[1] = Colors.Red;
                  break;
         case 3 : selectedColor[2] = Colors.Red;
                  break;
         
       }
     });

  }
现在我们要做的是在你的onChanged函数中调用它,或者你也可以在onTap中提到它,但我不明白你为什么同时使用这两个函数

我会用

void _onItemTapped(int _selectedIndex) {
      setState(() {                                //Is something wrong with my setState?
        _selectedIndex = index;
        updateColor(_selectedIndex);
      });
      _pageController.jumpToPage(_selectedIndex);

    }

尝试下面的代码,在脚手架安装之前插入代码,也不要忘记插入程序包

 bottomNavigationBar: CurvedNavigationBar(
        color: Colors.black26,
        backgroundColor: Color(0xFFFFC5C5),
        buttonBackgroundColor: Colors.greenAccent,
        height: 50.0,
        animationCurve: Curves.bounceInOut,
        items: <Widget>[
          Icon(Icons.translate, size: 20, color: Colors.black),

          Icon(Icons.translate, size: 20, color: Colors.black),
          Icon(Icons.list, size: 20, color: Colors.black),
          Icon(Icons.account_balance, size: 20,
              color: Colors.black),
//            Icon(Icons.camera, size: 20, color: Colors.black),
        ],
        index: 2,
        animationDuration: Duration(milliseconds: 400),
        onTap: (index) {
          debugPrint("Curent index is $index");
        }
    )
bottomNavigationBar:CurvedNavigationBar(
颜色:颜色。黑色,
背景颜色:颜色(0xFFFFC5C5C5C5),
buttonBackgroundColor:Colors.greenAccent,
身高:50.0,
animationCurve:Curves.bounceInOut,
项目:[
图标(Icons.translate,大小:20,颜色:Colors.black),
图标(Icons.translate,大小:20,颜色:Colors.black),
图标(Icons.list,大小:20,颜色:Colors.black),
图标(Icons.account\u余额,大小:20,
颜色:颜色。黑色),
//图标(图标。摄像头,尺寸:20,颜色:颜色。黑色),
],
索引:2,
animationDuration:持续时间(毫秒:400),
onTap:(索引){
debugPrint(“当前索引为$index”);
}
)

您只需按如下方式更改底部导航栏中的颜色即可

  • 更改主颜色

    color: Colors.orange,
    
  • 更改背景色

    backgroundColor: Colors.white,
    
  • 更改图标背景色

    buttonBackgroundColor: Colors.orangeAccent,
    
  • 更改图标大小

    Icon(Icons.person, size: 30),
    
  • 示例代码如下所示

    bottomNavigationBar: CurvedNavigationBar(
          color: Colors.orange,
          backgroundColor: Colors.white,
          buttonBackgroundColor: Colors.orangeAccent,
          items: <Widget>[
            Icon(Icons.person, size: 30),
            Icon(Icons.close, size: 30),
            Icon(Icons.settings, size: 30),
          ],
          onTap: (index) {
           
            //Handle button tap
            
          },
        ),
    
    bottomNavigationBar:CurvedNavigationBar(
    颜色:颜色。橙色,
    背景颜色:Colors.white,
    按钮背景颜色:Colors.orangeacent,
    项目:[
    图标(Icons.person,尺寸:30),
    图标(Icons.close,大小:30),
    图标(图标。设置,大小:30),
    ],
    onTap:(索引){
    //把手按钮式水龙头
    },
    ),
    

    希望这能解决您的问题。

    Flatter现在处于稳定版本,因此您的代码中存在错误。您能帮我解决吗?我被困在这里看这会解决你的问题
    Icon(Icons.person, size: 30),
    
    bottomNavigationBar: CurvedNavigationBar(
          color: Colors.orange,
          backgroundColor: Colors.white,
          buttonBackgroundColor: Colors.orangeAccent,
          items: <Widget>[
            Icon(Icons.person, size: 30),
            Icon(Icons.close, size: 30),
            Icon(Icons.settings, size: 30),
          ],
          onTap: (index) {
           
            //Handle button tap
            
          },
        ),