我正在开发 Flutter 2.2.1(通道稳定)。我最近将 SDK 的环境从 2.7.0 更改为 2.12.0 以添加插件,但我的代码中出现了很多错误。其中之一是关于单选按钮列表的。
我的代码:
ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: languages.length,
itemBuilder: (ctx, index) {
return RadioListTile(
title: Row(
children: [
Image.asset(
'icons/flags/png/${languages[index]['flag']}.png',
package: 'country_icons',
height: 16,
),
Text(' ' + languages[index]['language']),
],
),
value: languages[index]['code'],
groupValue: widget.languageChosen,
onChanged: (_languageSelected) {
setState(() {
_languageChosen = _languageSelected;
widget.onLanguageChange!(_languageChosen);
});
},
);
}),
Run Code Online (Sandbox Code Playgroud)
该错误与“RadioListTile”有关,消息是:
无法推断类型参数“T”。
试图推断“T”的“动态”,但这不起作用:参数“onChanged”声明为“void Function(T?)?” 但参数是“void Function(Object?)”。类型“dynamic”是从以下位置推断出来的:参数“value”声明为“T”,但参数为“dynamic”。参数“groupValue”声明为“T?” 但论证是“动态的”。
考虑将显式类型参数传递给泛型。
我在该行收到另一个关于“_languageSelected”的错误错误_languageChosen = _languageSelected;是:
“对象?”类型的值 不能分配给“String”类型的变量。尝试更改变量的类型,或将右侧类型转换为“String”。
但我不知道这两个错误是否有关联。
Zac*_*lez 27
这对我来说是一个简单的修复,我忘记在我的小部件中专门声明我的值的类型。
错误
DropdownButton()
Run Code Online (Sandbox Code Playgroud)
没有错误
DropdownButton<String>()
Run Code Online (Sandbox Code Playgroud)
正确代码:
ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: languages.length,
itemBuilder: (ctx, index) {
return RadioListTile<String>(
title: Row(
children: [
Image.asset(
'icons/flags/png/${languages[index]['flag']}.png',
package: 'country_icons',
height: 16,
),
Text(' ' + languages[index]['language']),
],
),
value: languages[index]['code'],
groupValue: widget.languageChosen,
onChanged: (_languageSelected) {
setState(() {
_languageChosen = _languageSelected.toString();
widget.onLanguageChange!(_languageChosen);
});
},
);
}),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16589 次 |
| 最近记录: |