flutter - 颤振子道具正在改变父变量
问题描述
我将一个变量从父小部件发送给它的子小部件。通过参数。我在父子小部件上使用该变量。例如,我在父小部件上使用 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"),
);
}
}
推荐阅读
- django - WinError 10060 连接尝试失败
- ios - 在 AnyCancellable 上调用 .cancel() 与在 AnyCancellable 上调用有区别吗?= 在 SwiftUI 中为零?
- python - cap.read() 是 Python 中 OpenCV 中的元组吗?
- python - pyqt UI 文件 - 设置类属性
- javascript - JavaScript 解码 API 响应并制作 html 元素
- assembly - ARM 错误:立即表达式需要 # 前缀
- c++ - 如何在 C++ 预处理中以不同方式处理元组和单个标记?
- ios - 自定义 UITableViewCell 类 IOS 中文本字段中的空字符串
- node.js - 你如何填充一组猫鼬对象?
- android - 从 Android 访问可通过 Web 上的 VPN 访问的 Web 服务