标签: flutter-cubit

flutter_bloc 中 context.watch 和 context.read 有什么区别?

我只是在一瞬间就知道了一肘。我在教程视频中学习,因此在该视频中,导师制作了一个登录页面,其中包含电子邮件和密码文本字段以及一个登录按钮。在该视频中,导师仍然使用旧版本的 flutter_bloc。当我遵循其中一行代码时出现警告

child: ElevatedButton(
  onPressed: () {
    context.watch<AuthCubit>().signIn(
     _emailController.text,
     _passwordController.text);
}
Run Code Online (Sandbox Code Playgroud)

该代码写在 onPressed 函数按钮内。它说这context.bloc已被弃用。当我尝试运行该应用程序时,它返回一个错误,因为我使用的 flutter_bloc 版本不支持空安全,因此我将其升级到当前版本(7.3.1),我在版本 6.1.0 变更日志中找到了这一点(你可以看到它在flutter_bloc 更改日志中)

deprecated: context.bloc in favor of context.read and context.watch
Run Code Online (Sandbox Code Playgroud)

因为我不知道区别,所以我只是更改context.bloccontext.watch然后再次运行该应用程序,它返回另一个错误

Tried to listen to a value exposed with a provider, from outside of the widget tree.

This is likely caused by an event handler (like a button's onPressed) that called
Provider.of without passing `listen: false`.

To fix, write:
Provider.of<AuthCubit>(context, listen: false);

It is unsupported …
Run Code Online (Sandbox Code Playgroud)

mobile android flutter flutter-bloc flutter-cubit

9
推荐指数
1
解决办法
1万
查看次数

如何使用 BlocBuilder 在 Flutter 中刷新 Dialog

我有一个对话框,我将其包装在 blocbuilder 中以根据状态类型更新它,但该对话框只是第一次构建,在状态更改后它不会重建。

showDialog(
  context: context,
  builder: (_) {
  BlocBuilder<ExampleCubit, ExampleState>(
      bloc: cubit,
      builder: (context, state) {
        return CustomDialog(
          title:"title",
          onSave: (File file) {
            cubit.uploadImage(file);
          },
          progress: (state is ExtendedExampleState)? state.progress:0,
          onDelete: () {},
          onCancel: () {
             cubit.cancelUploading();
          },
        );
      },
    );
Run Code Online (Sandbox Code Playgroud)

注意:使用 Bloc 模式很重要StateFulBuilder

flutter bloc flutter-dialog cubit flutter-cubit

7
推荐指数
1
解决办法
5692
查看次数

我可以用另一肘来称呼肘吗?

我正在开发一个使用肘节来管理状态的应用程序。很多时候,当我需要发出 API 请求时,我需要获取当前的本地化信息(处理可能的异常),然后将其发送到后端。所以我想我应该使用肘来请求并获取当前的本地化。

我的问题是我应该如何处理?我可以gpsLocalizationCubit从另一肘处打电话吗?我应该使用 bloc 侦听器进行调用gpsLocalizationCubit并成功调用吗?requestCubit但是,那么我应该如何管理对于获取本地化和 API 请求都应该可见的加载屏幕呢?另一个问题是我在单个视图中有多个类似的请求(需要使用当前本地化)。

flutter flutter-bloc flutter-state cubit flutter-cubit

7
推荐指数
1
解决办法
2145
查看次数

Flutter - cubit - 改变肘内的布尔值

我想更改肘部的布尔值,但我不知道该怎么做。

我想要实现的是,例如: if (以立方位存储的布尔值为 true) "show widget A" : "show widget B"

我的代码:

class ChangeBoolCubit extends Cubit<bool> {
  ChangeBoolCubit() : super(false);

  bool one = false;
  bool two = true;

  void changeValue(bool booleanToChange) {
    booleanToChange = !state;
    emit(booleanToChange);
  }
}
Run Code Online (Sandbox Code Playgroud)

看法:

class BoolView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Changing Bool')),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Center(
            child: BlocBuilder<ChangeBoolCubit, bool>(
              builder: (context, state) {
                return (ChangeBoolCubit().one)
                    ? Text('TRUE: ${ChangeBoolCubit().one}')
                    : Text('FALSE: …
Run Code Online (Sandbox Code Playgroud)

flutter bloc flutter-state cubit flutter-cubit

4
推荐指数
1
解决办法
1648
查看次数