我尝试更改应用程序中所有页面的背景色。用户可以从SettingsPage中的调色板选择颜色。
Wrap(
children: List<Widget>.generate(
mainColor.length,
(index) => GestureDetector(
onTap: () {
setState(() {
_selectedColor = index;
box.write('_selectedColor', index);
box.write(
'color0',
mainColor[index]
.toString()
.split('(')[1]
.split(')')[0]);
});
},
child: Padding(
padding: const EdgeInsets.all(4),
child: Container(
width: 30,
height: 30,
decoration: BoxDecoration(
border: Border.all(color: Colors.grey, width: 2),
shape: BoxShape.circle,
),
child: CircleAvatar(
// ignore: sort_child_properties_last
child: _selectedColor == index
? const Icon(Icons.done,
size: 16, color: Colors.white)
: null,
backgroundColor: mainColor[index],
radius: 14,
),
),
),
),
),
),
我有背景色列表。
List<Color> mainColor = [
const Color(0xffEF5350),
const Color(0xffF44336),
const Color(0xffBDBDBD),
const Color(0xff9E9E9E),
const Color(0xffEC407A),
const Color(0xffE91E63),
];
我在下面的其他页面中读到了颜色
backgroundColor: Color(int.parse(box.read('color0'))),
我的问题是当我导航回上一页时,颜色更改不适用。如果我再次启动应用程序,颜色更改将适用。
1条答案
按热度按时间bvn4nwqk1#
这样做不起作用的原因是你之前的页面在背景颜色改变时不会通知你。首先定义一个新的类,命名为
CustomBackground
:然后在应用中这样使用:
此外,不要忘记将主
MaterialApp
与ChangeNotifierProvider
打包,以便在应用的每个页面中访问CustomBackground
:最后把你的
onTap
改成这样