重置兄弟姐妹的状态
Reset State of sibling
我正在尝试从另一个 class 重置我的 DropdownButton class (SomeButton) 的字符串 (dropdownValue) 的值,这是一个兄弟姐妹。更准确地说,这是一些带有注释的代码
Parent(包含两个兄弟姐妹)
class Parent extends StatelessWidget {
const Parent({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
children: [
Whosebug(),
SomeButton(),
],
);
}
}
下拉菜单 Class(包含我想从按钮 class 重置的下拉值)
class Whosebug extends StatefulWidget {
const Whosebug({Key? key}) : super(key: key);
@override
State<Whosebug> createState() => _WhosebugState();
}
class _WhosebugState extends State<Whosebug> {
String? dropdownValue;
@override
Widget build(BuildContext context) {
return DropdownButtonHideUnderline(
child: DropdownButton2(
items: someItems,
onChanged: (value) {
setState(() {
dropdownValue = value as String;
});
},
value: dropdownValue),
);
}
}
Button(onTap -> 从上方清除 dropdownValue class)
class SomeButton extends StatelessWidget {
const SomeButton({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
// reset dropdownValue
},
);
}
}
当我搜索解决方案时,密钥可能是一个选项。但老实说,我从未使用过密钥,也没有看到任何关于我的问题的明确文档。也可以使用 Provider,但我无法初始化我的 dropdownValue,因为到目前为止还没有用户交互时我应该是空的。如果能提供任何帮助,我将不胜感激:)
您可以使用 parent class 中的回调函数。
class Parent extends StatefulWidget {
const Parent({Key? key}) : super(key: key);
@override
State<Parent> createState() => _ParentState();
}
class _ParentState extends State<Parent> {
String? dropdownValue;
@override
Widget build(BuildContext context) {
return Column(
children: [
Whosebug(
dropdownValue: dropdownValue,
onChanged: (value) {
setState(() {
dropdownValue = value;
});
},
),
SomeButton(
dropdownValue: dropdownValue,
onTap: () {
//reset dropdownValue to whatever you want
},
),
],
);
}
}
我正在尝试从另一个 class 重置我的 DropdownButton class (SomeButton) 的字符串 (dropdownValue) 的值,这是一个兄弟姐妹。更准确地说,这是一些带有注释的代码
Parent(包含两个兄弟姐妹)
class Parent extends StatelessWidget {
const Parent({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
children: [
Whosebug(),
SomeButton(),
],
);
}
}
下拉菜单 Class(包含我想从按钮 class 重置的下拉值)
class Whosebug extends StatefulWidget {
const Whosebug({Key? key}) : super(key: key);
@override
State<Whosebug> createState() => _WhosebugState();
}
class _WhosebugState extends State<Whosebug> {
String? dropdownValue;
@override
Widget build(BuildContext context) {
return DropdownButtonHideUnderline(
child: DropdownButton2(
items: someItems,
onChanged: (value) {
setState(() {
dropdownValue = value as String;
});
},
value: dropdownValue),
);
}
}
Button(onTap -> 从上方清除 dropdownValue class)
class SomeButton extends StatelessWidget {
const SomeButton({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
// reset dropdownValue
},
);
}
}
当我搜索解决方案时,密钥可能是一个选项。但老实说,我从未使用过密钥,也没有看到任何关于我的问题的明确文档。也可以使用 Provider,但我无法初始化我的 dropdownValue,因为到目前为止还没有用户交互时我应该是空的。如果能提供任何帮助,我将不胜感激:)
您可以使用 parent class 中的回调函数。
class Parent extends StatefulWidget {
const Parent({Key? key}) : super(key: key);
@override
State<Parent> createState() => _ParentState();
}
class _ParentState extends State<Parent> {
String? dropdownValue;
@override
Widget build(BuildContext context) {
return Column(
children: [
Whosebug(
dropdownValue: dropdownValue,
onChanged: (value) {
setState(() {
dropdownValue = value;
});
},
),
SomeButton(
dropdownValue: dropdownValue,
onTap: () {
//reset dropdownValue to whatever you want
},
),
],
);
}
}