class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: BlocProvider(
create: (BuildContext context) => LoginBloc(),
child: LoginScreen(),
),
);
}
}
而在LoginScreen中使用BlocProvider.of()时,应该使用Scaffold的context来获取Bloc:
class LoginScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final loginBloc = BlocProvider.of(context);
...
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () {
final loginBloc = BlocProvider.of(context);
...
},
child: Text('Login'),
),
),
);
}
}
要修复这个错误,需要在上下文中创建BlocProvider:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: BlocProvider(
create: (BuildContext context) => LoginBloc(),
child: Center(
child: RaisedButton(
onPressed: () {
final loginBloc = BlocProvider.of(context);
...
},
child: Text('Login'),
),
),
),
);
}
}