【问题标题】:I am not able to access TextEditingController using bloc in Flutter我无法在 Flutter 中使用 bloc 访问 TextEditingController
【发布时间】:2021-10-26 15:01:59
【问题描述】:

如何访问 TextEditingController();使用块。这是我的代码:- 使用后

BlocProvider.of<UsernameupdateCubit>(context).nameUpdate(userUpdateController.text);

我遇到了一个错误,即 使用不包含 UsernameupdateCubit 的上下文调用 BlocProvider.of()。

请检查: 我用

final userUpdateController = TextEditingController();

那么

TextFormField(
          controller: userUpdateController,
          decoration: InputDecoration(
            labelText: "Full Name",
            border: OutlineInputBorder(),
            prefixIcon: Icon(FeatherIcons.user, size: 24),
          ),
        ),

之后使用按钮在任何地方保存/发送/访问或显示在列表视图中: 按钮是:

Container(
          margin: EdgeInsets.only(top: 10),
          alignment: AlignmentDirectional.centerEnd,
          child: ElevatedButton(
            style: ElevatedButton.styleFrom(
              elevation: 1,
              primary: Color(0xff34495e),
            ),
            onPressed: () {
              // BlocProvider.of<UsernameupdateCubit>(context).nameUpdate();
              // BlocProvider.of<WeatherBloc>(context)
              BlocProvider.of<UsernameupdateCubit>(context)
                  .nameUpdate(userUpdateController.text);
            },
            child: Text(
              "Continue",
            ),
          ),
        ),

我的肘:

class UsernameupdateCubit extends Cubit<UsernameupdateState> {
  UsernameupdateCubit() : super(UsernameupdateState(userUpdateName: ''));

  void nameUpdate(userUpdateController) =>
      emit(UsernameupdateState(userUpdateName: userUpdateController.text));
}

状态是:

    class UsernameupdateState {
  String userUpdateName;
  UsernameupdateState({
    required this.userUpdateName,
  });
}

【问题讨论】:

  • 这与TextEditingController无关。您的 UsernameupdateCubit 在哪里?你在某处有实例化它的 BlocProvider 吗?
  • 是的,你是对的。我解决了这个问题。

标签: flutter dart text bloc


【解决方案1】:

所有内容都相同,但我将 BlocProvider 包含在: 使用多块:

    BlocProvider(
          create: (context) => UsernameupdateCubit(),
    ),

在那之后我改变了我的肘:

    void nameUpdate(userUpdateController) =>
      emit(UsernameupdateState(userUpdateName: userUpdateController));

是的,就是这样。 谢谢 - @nvoigt #nvoigt

【讨论】:

    猜你喜欢
    • 2020-11-20
    • 2021-01-03
    • 2021-04-16
    • 2021-07-29
    • 2019-10-11
    • 2021-10-03
    • 2021-08-26
    • 2020-09-26
    • 1970-01-01
    相关资源
    最近更新 更多