无法将颤振块提供程序分配给参数类型



我正在尝试使用这些块,但我不明白。当我想在BlocRouter类中对导航进行分组时,我会收到一条错误消息。错误消息为:

"无法将参数类型"BlocProvider"分配给参数类型"Route">

这里是我的文件:

MainScaffold:在这个文件中,我有错误消息

class MainScaffold extends StatelessWidget{
final String title;
MainScaffold({this.title});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(title)),
body : Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Text("Choose a bloc"),
RaisedButton(
child: Text("Counter"),
onPressed : () => Navigator.of(context).push(BlocRouter().counterDetail()), // ERROR MESSAGE HERE
),
],
),
),
);
}
}

BlocRouter:

class BlocRouter{
MaterialPageRoute counterPage() => MaterialPageRoute(builder: (context) => counterDetail());
BlocProvider counterDetail() => BlocProvider<CounterBloc>(bloc: CounterBloc(),child: CounterScreen());
}

CounterBloc:

class CounterBloc extends Bloc{
int counter = 0;
final _streamController = StreamController<int>();
Sink<int> get sink =>_streamController.sink;
Stream<int> get stream => _streamController.stream;
CounterBloc(){
sink.add(counter);
}
incrementCounter(){
counter = counter + 1;
sink.add(counter);
}
decrementCounter(){
counter = counter - 1;
sink.add(counter);
}
@override
dispose(){
return _streamController.close();
}
}

BlocProvider:

class BlocProvider<T extends Bloc> extends StatefulWidget{
final T bloc;
final Widget child;
BlocProvider({@required this.bloc, @required this.child});
static T of<T extends Bloc>(BuildContext context){
final BlocProvider<T> provider = context.findAncestorWidgetOfExactType<BlocProvider<T>>();
return provider.bloc;
}
State createState() => _BlocProviderState();
}
class _BlocProviderState extends State<BlocProvider>{
@override
Widget build(BuildContext context) {
return widget.child;
}
@override
void dispose() {
widget.bloc.dispose();
super.dispose();
}
}

push需要Route,而您正在传递BlocProvider。在push中传递MaterialPageRoute并执行以下操作:

Navigator.of(context).push(
MaterialPageRoute(builder: (context) => BlocRouter().counterDetail()),
);

最新更新