gpt4 book ai didi

flutter - Dart 泛型类型作为类成员函数类型

转载 作者:行者123 更新时间:2023-12-04 08:00:24 24 4
gpt4 key购买 nike

我有一个使用泛型的类:
屏蔽块

class ScreenWithUpdater<DataType> extends StatefulWidget {
final Updater<DataType> updater;
final Widget Function(BuildContext, DataType) bodyBuilder;
final Duration updatePeriod;

const ScreenWithUpdater({
Key key,
@required this.updater,
@required this.bodyBuilder,
@required this.updatePeriod,
}) : super(key: key);
@override
_ScreenWithUpdaterState createState() => _ScreenWithUpdaterState();
}

class _ScreenWithUpdaterState<DataType>
extends State<ScreenWithUpdater<DataType>> {
UpdateBloc<DataType> _bloc;

@override
void initState() {
super.initState();
}

@override
void didChangeDependencies() {
super.didChangeDependencies();
_bloc = UpdateBloc<DataType>(
updatePeriod: widget.updatePeriod,
updater: widget.updater,
);
}

@override
void dispose() {
_bloc.close();
super.dispose();
}

@override
Widget build(BuildContext context) {
return BlocBuilder<UpdateBloc, UpdateState>(
cubit: _bloc,
builder: (
context,
state,
) {
if (state is ShowLoader) {
return LoaderWidget();
} else if (state is UpdateMainState<DataType>) {
return widget.bodyBuilder(context, state.data);
} else {
return Center(
child: Text('Something went wrong'),
);
}
},
);
}
}
当我以这样的方式调用它时:
ScreenWithUpdater<List<OrderFromApi>>(
updatePeriod: updatePeriod,
updater: OrdersPageUpdater(),
bodyBuilder: (context, orders) => OrdersPage(microOrders: orders),
),
它失败但有异常

type '(BuildContext, List) => OrdersPage' is not a subtype of type '(BuildContext, dynamic) => Widget'



但是当我用下一种方式打电话时
ScreenWithUpdater(
updatePeriod: updatePeriod,
updater: OrdersPageUpdater(),
bodyBuilder: (context, orders) => OrdersPage(microOrders: orders),
),
它工作正常
为什么?我应该改变什么来运行我的第一个版本?

最佳答案

下一行出现了一个问题:

 @override
_ScreenWithUpdaterState createState() => _ScreenWithUpdaterState();
}
然后我把这条线改成了
 @override
_ScreenWithUpdaterState createState() => _ScreenWithUpdaterState<DataType>();
}
现在一切正常!

关于flutter - Dart 泛型类型作为类成员函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66508228/

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