Light logo

محدوده‌بندی حالت (تزریق‌ها)

یاد بگیر چطور حالت رو (از طریق تزریق‌ها) توی ReArch محدوده‌بندی کنی.

محدوده‌بندی حالت (تزریق‌ها)

محدوده‌بندی حالت رو می‌تونی با ترکیب یه RearchConsumer و یه InheritedWidget جدید به دست بیاری.

اما چون این کار کلی کد تکراری (boilerplate) ایجاد می‌کنه،
ReArch یه ویجت داخلی به اسم RearchInjection داره که حالت رو توی درخت ویجت "تزریق" می‌کنه:

dart
/// مقدار فعلی شمارش رو به فرزندان توی درخت [Widget] ارائه می‌ده.
class CountInjection extends RearchInjection<CountInjection, ValueWrapper<int>> {
  const CountInjection({required super.child, super.key});

  @override
  ValueWrapper<int> build(BuildContext context, WidgetHandle use) {
    return use.data(0);
  }

  static ValueWrapper<int> of(BuildContext context) =>
      RearchInjection.of<CountInjection, ValueWrapper<int>>(context);

  static ValueWrapper<int>? maybeOf(BuildContext context) =>
      RearchInjection.maybeOf<CountInjection, ValueWrapper<int>>(context);
}

const SomeWidget(
  child: CountInjection(
    child: Builder(
      builder: (context) {
        final count = CountInjection.of(context);
        return Text('${count.value}');
      },
    ),
  ),
)

On this page