Flutter 使用 GlobalKey 从另一个类更改状态
Posted
技术标签:
【中文标题】Flutter 使用 GlobalKey 从另一个类更改状态【英文标题】:Flutter change state from another class using GlobalKey 【发布时间】:2020-05-18 18:44:30 【问题描述】:我有一个底页,它有可以更改的子项。我正在尝试使用GlobalKey
从孩子那里访问父母的方法。它在下面抛出异常:
The following NoSuchMethodError was thrown while handling a gesture:
The method 'selectedChild' was called on null.
Receiver: null
Tried calling: selectedChild(1)
我只是想改变另一个类的状态。任何建议都会很棒。我怎样才能让它发挥作用?
家长:
class _ServicesModal extends StatefulWidget
@override
ServicesModalState createState() => ServicesModalState();
class ServicesModalState extends State<_ServicesModal>
var selectedChild = 0;
var _children = [
ServicePackage(),
Calls()
];
selectChildren(int select)
setState(()
selectedChild = select;
);
@override
Widget build(BuildContext context)
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20),
)
),
child: ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20),
),
child: _children[selectedChild]
),
);
孩子:
class ServicePackage extends StatefulWidget
GlobalKey<ServicesModalState> _serviceModalState = GlobalKey();
@override
_ServicePackageState createState() => _ServicePackageState();
class _ServicePackageState extends State<ServicePackage>
@override
Widget build(BuildContext context)
return Container(
child: IconButton(
icon: Icon(Icons.add),
onPressed: ()
setState(()
widget._serviceModalState.currentState.selectedChild(1);
);
,
),
);
【问题讨论】:
检查这个答案可能会有所帮助***.com/a/56928670/10660823 【参考方案1】:您在 _ServicePackageState
类中将 selectChildren
错误地输入为 selectedChild
。
【讨论】:
以上是关于Flutter 使用 GlobalKey 从另一个类更改状态的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Flutter 文档在创建 Form 时要求使用 GlobalKey 而不是其他类型的键?
flutter通过 GlobalKey 获取界面任意元素坐标尺寸