我试图在 flutter 中创建一个通用的有状态小部件,它带有一个参数作为一个带有通用参数的函数,如下所示:-
class MyWidget<T> extends StatefulWidget {
MyWidget(
{this.fn}
);
final void Function(T value)? fn;
@override
_MyWidgetState createState() => _MyWidgetState<T>();
}
class _MyWidgetState<T> extends State<MyWidget> {
@override
Widget build(BuildContext context) {
return Text('Hello, World! ${widget.fn == null}');
}
}
然后我这样称呼它:-
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark(),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget<double>(
fn: (_) {},
),
),
),
);
}
}
但这不会产生任何输出,有人可以帮助我吗?这在Stateless
Widget 和fn
value 的情况下非常有效null
。
这是因为_MyWidgetState 不知道如何参数化其父widget 的类型,所以当您尝试使用widget.fn 时,运行时无法正确解析类型。
要修复它,请尝试以下操作:
class _MyWidgetState<T> extends State<MyWidget<T>> {
^^^
而不是这个
class _MyWidgetState<T> extends State<MyWidget> {
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句