Flutter在List<Widget>中查找Widget

Elm*_*mer 1 dart flutter

我有一个小部件列表:

List<Widget> widgetList = List<Widget>();

widgetList.add(WidgetA());
widgetList.add(WidgetB());
widgetList.add(WidgetC());
widgetList.add(WidgetD());
Run Code Online (Sandbox Code Playgroud)

现在我想在列表中找到 WidgetB:

Widget activeWidget = widgetList.firstWhere((x) => x.key == ??);
Run Code Online (Sandbox Code Playgroud)

我认为“key”属性是我应该用来唯一标识每个小部件的属性,但我不确定要使用什么类型的密钥或如何通过密钥查找,也不知道这是否是正确的方法。

任何信息都会有帮助,谢谢。

Ade*_*los 5

您需要传递每个小部件的密钥:

var keyA = UniqueKey();
var keyB = UniqueKey();
var keyC = UniqueKey();
var keyD = UniqueKey();
List<Widget> widgetList = List<Widget>();

widgetList.add(WidgetA(key: keyA));
widgetList.add(WidgetB(key: keyB));
widgetList.add(WidgetC(key: keyC));
widgetList.add(WidgetD(key: keyD));
Run Code Online (Sandbox Code Playgroud)

现在您可以搜索:

Widget activeWidget = widgetList.firstWhere((x) => x.key == keyB);
Run Code Online (Sandbox Code Playgroud)