Flutter 在bottomNavigationBar颤振中为文本添加渐变
我需要在底部导航栏上颤振图标下的文本上创建渐变 这就是我所拥有的: 这就是我想说的: 我试过这个:,但我没能完全让它工作。我的问题是我只能找到编辑selectedItem的textStyle的方法,而不是文本小部件本身。如果我知道如何将标题更改为一个单独的小部件,我可以遵循堆栈溢出问题 我目前可以将所有标题设置为渐变,也可以不设置任何标题,但还没有找到一种方法使标题渐变或不渐变,这取决于切换。我找到了一种方法,可以根据是否使用此代码选择图标来设置渐变或非渐变:Flutter 在bottomNavigationBar颤振中为文本添加渐变,flutter,Flutter,我需要在底部导航栏上颤振图标下的文本上创建渐变 这就是我所拥有的: 这就是我想说的: 我试过这个:,但我没能完全让它工作。我的问题是我只能找到编辑selectedItem的textStyle的方法,而不是文本小部件本身。如果我知道如何将标题更改为一个单独的小部件,我可以遵循堆栈溢出问题 我目前可以将所有标题设置为渐变,也可以不设置任何标题,但还没有找到一种方法使标题渐变或不渐变,这取决于切换。我找到了一种方法,可以根据是否使用此代码选择图标来设置渐变或非渐变: BottomNavigatio
BottomNavigationBarItem _createBarItem(inputTitle, inputIcon) {
return BottomNavigationBarItem(
activeIcon: ShaderMask(
shaderCallback: (Rect bounds) {
return RadialGradient(
center: Alignment.centerLeft,
radius: 0.5,
colors: <Color>[
Colors.redAccent[200],
Colors.orangeAccent[200],
Colors.red.shade200
],
tileMode: TileMode.repeated,
).createShader(bounds);
},
child: inputIcon,
),
icon: inputIcon,
title: Text(inputTitle),
);
}
为此,您的
\u createBarItem
方法必须再获取一个参数,即项目的位置。然后将其与所选索引进行比较,如果它们匹配,您就知道该项已被选中,您可以对文本或任何您喜欢的内容应用渐变
BottomNavigationBarItem _createBarItem(
String inputTitle, Icon inputIcon, int position) {
return BottomNavigationBarItem(
activeIcon: ShaderMask(
shaderCallback: (Rect bounds) {
return RadialGradient(
center: Alignment.centerLeft,
radius: 0.5,
colors: <Color>[
Colors.redAccent[200],
Colors.orangeAccent[200],
Colors.red.shade200
],
tileMode: TileMode.repeated,
).createShader(bounds);
},
child: inputIcon,
),
icon: inputIcon,
title: position == index
? ShaderMask(
shaderCallback: (Rect bounds) {
return RadialGradient(
center: Alignment.centerLeft,
radius: 0.5,
colors: <Color>[
Colors.redAccent[200],
Colors.orangeAccent[200],
Colors.red.shade200
],
tileMode: TileMode.repeated,
).createShader(bounds);
},
child: Text(
inputTitle,
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
)
: Text(inputTitle),
);
}
BottomNavigationBarItem\u createBarItem(
字符串输入、图标输入、整数位置){
返回底部导航BarItem(
活动图标:ShaderMask(
着色器回调:(矩形边界){
返回径向梯度(
居中:对齐。居中左,
半径:0.5,
颜色:[
颜色。红色口音[200],
颜色。橙色每分[200],
Colors.red.shade200
],
tileMode:tileMode.重复,
).createShader(边界);
},
孩子:因普蒂顿,
),
图标:inputIcon,
标题:位置==索引
?沙德尔马斯克(
着色器回调:(矩形边界){
返回径向梯度(
居中:对齐。居中左,
半径:0.5,
颜色:[
颜色。红色口音[200],
颜色。橙色每分[200],
Colors.red.shade200
],
tileMode:tileMode.重复,
).createShader(边界);
},
子:文本(
输入标题,
样式:TextStyle(fontSize:20,fontWeight:fontWeight.bold),
),
)
:文本(输入标题),
);
}
输出
BottomNavigationBarItem _createBarItem(
String inputTitle, Icon inputIcon, int position) {
return BottomNavigationBarItem(
activeIcon: ShaderMask(
shaderCallback: (Rect bounds) {
return RadialGradient(
center: Alignment.centerLeft,
radius: 0.5,
colors: <Color>[
Colors.redAccent[200],
Colors.orangeAccent[200],
Colors.red.shade200
],
tileMode: TileMode.repeated,
).createShader(bounds);
},
child: inputIcon,
),
icon: inputIcon,
title: position == index
? ShaderMask(
shaderCallback: (Rect bounds) {
return RadialGradient(
center: Alignment.centerLeft,
radius: 0.5,
colors: <Color>[
Colors.redAccent[200],
Colors.orangeAccent[200],
Colors.red.shade200
],
tileMode: TileMode.repeated,
).createShader(bounds);
},
child: Text(
inputTitle,
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
)
: Text(inputTitle),
);
}