【发布时间】:2021-09-24 16:48:54
【问题描述】:
我将一个变量从父小部件发送给它的子小部件。通过参数。我在父子小部件上使用该变量。例如,我在父小部件上使用 variable.name。当我更改子小部件 widget.variable.name = 'all' 上的变量时,它也在更新父小部件,但我只想在子小部件上更改它。
【问题讨论】:
-
请分享您的代码
我将一个变量从父小部件发送给它的子小部件。通过参数。我在父子小部件上使用该变量。例如,我在父小部件上使用 variable.name。当我更改子小部件 widget.variable.name = 'all' 上的变量时,它也在更新父小部件,但我只想在子小部件上更改它。
【问题讨论】:
您可以在子状态中创建一个临时变量。
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int parentVal = 1;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
ElevatedButton(
onPressed: () {
setState(() {
parentVal++;
});
},
child: Text("parent val: $parentVal"),
),
ChildW(
childval: parentVal,
)
],
));
}
}
class ChildW extends StatefulWidget {
final int childval;
const ChildW({
Key? key,
required this.childval,
}) : super(key: key);
@override
State<ChildW> createState() => _ChildWState();
}
class _ChildWState extends State<ChildW> {
late int tempChildVal;
@override
void initState() {
super.initState();
tempChildVal = widget.childval;
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () {
setState(() {
tempChildVal++;
});
},
child: Text("child val: $tempChildVal"),
);
}
}
【讨论】: