【发布时间】:2022-08-19 01:53:14
【问题描述】:
我想调用 \"changecolor();\" 函数,但它在不同的类中。
class AppBarPage extends StatelessWidget implements PreferredSizeWidget {
const AppBarPage({Key? key}) : super(key: key);
@override
Size get preferredSize => const Size.fromHeight(100);
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
drawer: const Drawer(),
appBar: AppBar(
backgroundColor: Colors.pink.shade400,
toolbarHeight: 100,
elevation: 14,
shape: const RoundedRectangleBorder(
// ignore: unnecessary_const
borderRadius: const BorderRadius.only(
bottomRight: Radius.circular(70),
bottomLeft: Radius.circular(70))),
title: const Text(
\'Rick and Morty\',
),
actions: [
Row(
children: [
Container(
height: 40,
width: 40,
alignment: Alignment.center,
// ignore: prefer_const_literals_to_create_immutables
decoration: BoxDecoration(boxShadow: [
const BoxShadow(
blurRadius: 7, spreadRadius: 3, color: Colors.pink)
], shape: BoxShape.circle, color: Colors.pink.shade400),
child: IconButton(
icon: const Icon(Icons.settings),
onPressed: () {
changecolor();
},
),
如您所见,在最后一部分中,我希望我的卡片在调用该函数时改变颜色。这里是另一个班级
class _HomeRickState extends State<HomeRick> {
Color color = const Color.fromARGB(243, 247, 243, 243);
void changecolor() {
setState(() {
if (color == Color.fromARGB(243, 247, 243, 243)) {
color = Color.fromARGB(243, 241, 220, 237);
} else {
color = Color.fromARGB(243, 247, 243, 243);
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: const AppBarPage(),
body: SafeArea(
child: Card(
color: color,
//color: Color.fromARGB(243, 241, 220, 237),
两者都在同一个文件中。 老实说,我正在学习。我想问题出在“AppBarPage”类,因为它是一个无状态小部件,但是当我想将它转换为一个 staefullwidget 时,它给了我一个错误。
-
我不相信您可以在完全不同的小部件中调用 setState 并对当前小部件产生任何影响。
标签: flutter