gpt4 book ai didi

android - Flutter:使用不包含 Bloc 类型的上下文调用 blocprovider.of()

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

我是 Flutter 的新手,我想使用 BLoc 实现一个简单的登录屏幕。没有构建错误,但在运行时收到以下错误
“使用不包含 LoginBloc 类型的 Bloc 的上下文调用 blocprovider.of()”
我的代码

class LoginForm extends StatefulWidget {
@override
State<LoginForm> createState() => _LoginFormState();
}

class _LoginFormState extends State<LoginForm> {
final _usernameController = TextEditingController();
final _passwordController = TextEditingController();

@override
Widget build(BuildContext context) {
_onLoginButtonPressed() {
BlocProvider.of<LoginBloc>(context).add(
LoginButtonPressed(
username: _usernameController.text,
password: _passwordController.text,
),
);
}

return BlocBuilder<LoginBloc, LoginState>(
builder: (context, state) {
return Form(
child: Column(
children: [
TextFormField(
decoration: InputDecoration(labelText: 'username'),
controller: _usernameController,
),
TextFormField(
decoration: InputDecoration(labelText: 'password'),
controller: _passwordController,
obscureText: true,
),
RaisedButton(
onPressed:
state is! LoginInProgress ? _onLoginButtonPressed : null,
child: Text('Login'),
),
Container(
child: state is LoginInProgress
? CircularProgressIndicator()
: null,
),
],
),
);
},
);
}
}

最佳答案

您是否“提供”了 LoginBlocLoginForm 上方的小部件中?
此错误表示没有父窗口小部件引用已创建的 LoginBloc .
如果不这样做,您将需要:

BlocProvider<LoginBloc>(
create: (context) => LoginBloc(),
builder: (context, state) {
// LoginForm can now use `BlocProvider.of<LoginBloc>(context)`
}
)

关于android - Flutter:使用不包含 Bloc 类型的上下文调用 blocprovider.of(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62580305/

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