flutter 泛型_在Flutter中通过Function(T)传递泛型类型
我正在尝试创建一个通用的消费者小部件,以方便其子视图模型。因此,我有两个功能。一个在ViewModel初始化后具有功能(T),另一个用于将模型传递给其子Widget。泛型类中的ChangeChangeifier的子级,并且可以正常工作,直到我想在两个函数中发送T值为止。然后我得到以下错误:类型’(OnBoardingViewModel)=> Null’不是类型’(ChangeNotifier
我正在尝试创建一个通用的消费者小部件,以方便其子视图模型。因此,我有两个功能。一个在ViewModel初始化后具有功能(T),另一个用于将模型传递给其子Widget。
泛型类中的ChangeChangeifier的子级,并且可以正常工作,直到我想在两个函数中发送T值为止。
然后我得到以下错误:
类型’(OnBoardingViewModel)=> Null’不是类型’(ChangeNotifier)=> void’的子类型
和
类型’(BuildContext,OnBoardingViewModel,Widget)=>脚手架’不是类型’(BuildContext,ChangeNotifier,Widget)=>
Widget’的子类型
但是,当我将扩展类型从ChangeNotifier更改为OnBoardingViewModel时,一切正常。
有人可以帮助我,或解释为什么这不起作用吗?
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:provider/provider.dart';
class StateFullConsumerWidget extends StatefulWidget{
StateFullConsumerWidget({@required this.builder,Key key,this.onPostViewModelInit,this.child}) : super(key : key);
final Widget Function(BuildContext context, ChangeNotifier value, Widget child) builder;
final Widget child;
final void Function(T) onPostViewModelInit;
@override
_StateFullConsumerWidgetState createState() => _StateFullConsumerWidgetState();
}
class _StateFullConsumerWidgetState extends State{
T _viewModel;
@override
void initState() {
// assign the model once when state is initialised
_viewModel = GetIt.instance.get();
widget.onPostViewModelInit(_viewModel);
super.initState();
}
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
builder: (context) => _viewModel,
child: Consumer(
builder: widget.builder,
child: widget.child,
),
);
}
}
我的小部件
StateFullConsumerWidget(
onPostViewModelInit: (viewModel){
buildIntroList(viewModel);
viewModel.maxPages = _introWidgetsList.length;
},
builder: (context,viewModel,child) {
return Scaffold(
key: widget.scaffoldKey,
body: SafeArea(
child: Container(),
),
),
);
},
);
我的ViewModel
import 'package:flutter/material.dart';
class OnBoardingViewModel extends ChangeNotifier{
OnBoardingViewModel(){
}
}
更多推荐
所有评论(0)