محدودهبندی حالت رو میتونی با ترکیب یه 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}');
},
),
),
)