gpt4 book ai didi

flutter - 列出Flutter中的小部件的实例化列表

转载 作者:行者123 更新时间:2023-12-03 03:35:49 30 4
gpt4 key购买 nike

我想基于一个int实例化一个Widget。

const List<Widget> WIDGETS = <Widget>[
Widget1,
Widget2,
Widget3,
Widget4,
];

final int index = 1;

Navigator.pushReplacement(context, MaterialPageRoute<Widget>(builder: (BuildContext context) => WIDGETS[index](hey: index))));

但是,我在窗口小部件列表中收到以下错误:
The element type 'Type' can't be assigned to the list type 'Widget'. dart(list_element_type_not_assignable)
我不想使用 dynamic或类似的东西,有没有办法声明这些是Widget Type

JS类似于 typeof

这个有可能:

void a() {
print('a');
}

void b() {
print('b');
}

const List<Function> EXAM_SCREENS = <Function>[
a,
b,
a,
a,
];

为什么我的情况不是这样?

Edit: Just to clarify, I need to pass dynamic arguments to these widgets. Widget1 needs the hey argument which is generated in its own Widget.

最佳答案

因为在初始化它们之前它们不是Widget,所以不需要初始化函数,因为它们像变量一样工作(将指针传递给函数)。

所以这样:

const List<Widget> WIDGETS = <Widget>[
Widget1,
Widget2,
Widget3,
Widget4,
];

您存储的是类型列表,那么,如果您尝试像这样更改它们,就不会出现任何错误。
const List<Type> WIDGETS = <Type>[
Widget1,
Widget2,
Widget3,
Widget4,
];

为了执行您要求的操作,需要通过使用一种方法来创建所需的小部件来从根本上改变方法,将索引作为参数(或选择要创建的正确小部件所需的任何参数)传递给该方法,然后根据这些参数,该方法将返回正确的Widget。

Widget _chooseTheRightOne(int index, dynamic hey) {
switch(index) {
case 0: Widget1(hey: hey); break;
case 1: Widget2(hey: hey); break;
}
}

关于flutter - 列出Flutter中的小部件的实例化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61232743/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com