【发布时间】:2021-12-26 07:25:13
【问题描述】:
如何从另一个小部件更改一个小部件的变量?
这是名为HomePage 的主要有状态小部件:
class _HomePageState extends State<HomePage> {
@override
num counter = 0;
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Title")),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [Text(counter.toString()), CardWidget()],
),
));
}
}
这是添加到HomePage 的CardWidget:
class CardWidget extends StatefulWidget {
const CardWidget({Key? key}) : super(key: key);
@override
_CardWidgetState createState() => _CardWidgetState();
}
class _CardWidgetState extends State<CardWidget> {
@override
Widget build(BuildContext context) {
return Card(
child: Column(
children: [
Text("Press the button to increment the counter"),
ElevatedButton(
onPressed: () {
//Something here to increment the counter in HomePage
},
child: const Text('Increment'),
),
],
));
}
}
是否可以在两个小部件之间创建连接:如果我点击按钮,主页小部件中会发生某些事情? (类似于 UIKit 中的委托)
【问题讨论】:
-
请同时发布您的 HomePage 课程。
-
使用
ValueNotifier和ValueListenableBuilder。查看我对类似问题的回答here。
标签: flutter dart delegates widget flutter-layout