小编Geo*_*ios的帖子

提供者 .read() 与 .watch()

我刚刚将我的flutter_bloc库更新为以下6.1.1状态:

bloc' 已弃用,不应使用。改用 context.read 或 context.watch。将在 v7.0.0 中移除。尝试使用替换来替换已弃用成员的使用。

这是我必须更改的部分代码:

class ContractSubscriptionForm extends StatelessWidget {
  final ContractSubscription contractSubscription;
  const ContractSubscriptionForm(this.contractSubscription, {Key key})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) => ContractSubscriptionFormBloc(
        contractSubscription,
        context.read<CoursesGroupBloc>().state.coursesGroupList,  // <---change to .read()
      ),
      child: SubscriptionFormBody(),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我确实改变的部分是这样的:context.bloc<CoursesGroupBloc>().state.coursesGroupList,context.read<CoursesGroupBloc>().state.coursesGroupList,并且现在正在工作。

在该.read()函数的文档中,我阅读了以下内容:

这种方法与[watch]相反。当值改变时,它不会重新生成widget,并且不能在[StatelessWidget.build]/[State.build]中调用。另一方面,它可以在这些方法之外自由调用。

出于某种原因,这是没有意义的,因为上面的代码在buildStatelessWidget 的a 中,并且正在处理.read()函数而不是.watch().

我错过了什么吗?

flutter flutter-provider flutter-bloc

6
推荐指数
1
解决办法
5192
查看次数

React Hook Form 和 watch() 的自定义 onChange

我正在尝试写一个习惯onChangewatch变化。

错误

观看者myValue不会注册下拉列表中的更改。有什么想法吗?

根据API 文档,可以通过执行以下操作来实现:

export default function App() {
  const { register, watch } = useForm();

  const fruits = register("fruits");

  const myValue = watch("fruits", "default");

  return (
    <div className="App">
      <h1>{myValue}</h1>
      <select
        onChange={(e) => {
          fruits.onChange(e); // react hook form onChange
          console.log("Here would go the my onChange"); // my onChange
        }}
        onBlur={fruits.onBlur}
        ref={fruits.ref}
      >
        <option value="1Banana">Banana</option>
        <option value="1Kiwi">Kiwi</option>
        <option value="1Mango">Mango</option>
      </select>
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

您可以在这里找到上面的示例:

https://codesandbox.io/s/divine-rgb-mwiqn?file=/src/App.js

javascript forms reactjs react-hook-form

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

为什么我应该使用带有日历的 Bloc 而不是静态地图?

在 Flutter 中,我想使用table_calendar 包中的日历来设置班次并将员工分配给他们。

为此,我还使用sqflite 包中的本地数据库。

我在网上看到了一些教程,例如Database Storage in Flutter using Sqflite,将数据库与 Bloc 技术结合起来。

对于我的日历,我需要一个Map<DateTime,List<dynamic>>来控制事件。到目前为止,我使用了一个静态地图,我将在不同的类中使用它,例如shift_form和shift_calendar。

Bloc 的实现将以这样的方式开始:

class ShiftBloc extends Bloc<ShiftEvent, Map<DateTime,List<dynamic>> {...

为什么应该使用 Bloc 而不是静态 Map?

另外是否可以使用 Bloc 作为 Map 数据结构?编辑:-> 是的

但是,我应该如何为从 Firestore 获取的流实现块作为映射而不是列表呢?

PS 我正在使用Flutter Firestore Todos 教程结构。

flutter bloc

2
推荐指数
1
解决办法
618
查看次数