所有我需要的是主要的父容器是改变颜色时,用户转到不同的页面,但无论我尝试它不会改变。
class AppCardColors {
static Color? orange = Colors.orange[500];
static Color? blue = Colors.blue[700];
static Color? red = Colors.red[600];
static List<Color?> colorsList = [
Colors.orange[500],
Colors.blue[700],
Colors.red[600],
];
}
上面的类是我从中获得我想要的颜色的类,正如你所看到的,我想要colorsList变量中的颜色。
//ignore: must_be_immutable
class MyWidget extends StatefulWidget {
MyWidget({required this.child, Key? key}) : super(key: key);
Widget child;
@override
State<MyWidget createState() => _MyWidgetState();
}
class _QuestionMainTemplateState extends State<QuestionMainTemplate> {
@override
Widget build(BuildContext context) {
PageController pageController = PageController();
int colorIndex = 0;
return Scaffold(
body: SizedBox(
height: double.maxFinite,
width: double.maxFinite,
child: Stack(
alignment: Alignment.center,
children: [
Container(
width: double.maxFinite,
height: double.maxFinite,
color: AppCardColors.colorsList[colorIndex], //where i want the color to change
),
Positioned(
left: 20,
top: 50,
child: IconButton(
onPressed: () {},
icon: const Icon(
color: Colors.white,
size: 30,
Icons.exit_to_app_rounded,
),
),
),
Positioned(
top: 125,
child: Container(
width: MediaQuery.of(context).size.width,
height: 5000,
child: PageView.builder(
controller: pageController,
onPageChanged: (index) {
setState(() {
colorIndex = index % AppCardColors.colorsList.length;
//where the color is chnaged
print(colorIndex);
});
},
itemCount: 5,
itemBuilder: (_, index) => IrrelevantWidget()),
),
),
],
),
),
);
}
}`
我尝试了各种各样的方法来分配不同的颜色,但没有任何工作,直到现在
1条答案
按热度按时间dbf7pr2w1#
您可以尝试在每次页面更改时触发的pageController中添加侦听器
记住在initState方法中添加侦听器