我想应该熟悉Flutter动力学,但是在运行时我得到一个错误:
class SelectMonthDialog<int> extends StatefulWidget {
final int _month;
final void Function(int month) _onItemSelected;
final void Function() onCancel;
const SelectMonthDialog(this._month, this._onItemSelected, this.onCancel,
{super.key});
@override
State<SelectMonthDialog> createState() => SelectMonthDialogState();
}
class SelectMonthDialogState extends State<SelectMonthDialog> {
late int _month;
@override
void initState() {
super.initState();
_month = widget._month;
}
@override
Widget build(BuildContext context) => AlertDialog(
content: NumberPicker(
value: _month,
minValue: 1,
maxValue: 12,
onChanged: (value) => setState(() => _month = value),
textMapper: <int>(number) =>
DateFormat(DateFormat.MONTH).format(DateTime(0, number)),
),
actions: <Widget>[
TextButton(
onPressed: () => widget._onItemSelected(_month),
child: Text(AppLocalizations.of(context)!.ok,
style: const TextStyle(color: Colors.grey)),
),
TextButton(
onPressed: () => widget.onCancel(),
child: Text(AppLocalizations.of(context)!.cancel,
style: const TextStyle(color: Colors.grey)),
),
],
);
}
字符串
的数据
为什么它被认为是动态的?
编辑:
如果我把implicit-casts: false
加到DateTime(0, number)
的analysis_options.yaml
上,我看到number
是动态的,所以SelectMonthDialog
是变量。为什么?为什么?
以下是什么意思?The argument type 'int' can't be assigned to the parameter type 'int'
个
1条答案
按热度按时间s5a0g9ez1#
你实际上已经通过写作定义了它是动态的
字符串
通过在这里写
<int>
,你可以使它成为一个动态类型。您的类实际上与型
因此,它不是普通的
int
类型。你需要简单地删除<int>
,因为我认为在你的情况下,你不会想要这个。所以简单地写型