התקינו את miniriverpod בתוך דקות.

הגדירו מגבלות SDK, הוסיפו את החבילה, ואמתו ש-ProviderScope + WidgetRef.watch מחוברים כראוי.

דרישות

השתמשו באותן מגבלות כמו החבילה כדי להימנע מחוסר התאמה בין ה-analyzer לבין זמן הריצה.

Dart SDK

>=3.10.0 <4.0.0

Flutter

טיפ

אם האפליקציה שלכם נעולה מתחת ל-Dart 3.10, העלו קודם את מגבלות ה-SDK, ואז הריצו flutter pub get.

התקנה

העדיפו התקנה דרך CLI, ואז שמרו את הגרסה מסונכרנת עם ה-changelog של החבילה.

CLI

pubspec.yaml

# הוספה לתלויות
dependencies:
  miniriverpod: ^0.0.2

צעדים ראשונים

עטפו את האפליקציה שלכם ב-ProviderScope, הגדירו Provider, ושרטטו מצב מתוך ConsumerWidget.

import 'package:flutter/widgets.dart';
import 'package:miniriverpod/miniriverpod.dart';

final counterProvider = Provider<int>((ref) => 0);

void main() {
  runApp(const ProviderScope(child: CounterApp()));
}

class CounterApp extends ConsumerWidget {
  const CounterApp({super.key});

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final count = ref.watch(counterProvider);
    return Directionality(
      textDirection: TextDirection.ltr,
      child: Center(child: Text('$count')),
    );
  }
}
השתמשו ב-Provider((ref) => ...) עבור ערכים סינכרוניים.
השתמשו ב-AsyncProvider<T>((ref) async => ...) עבור Future וב- ref.emit(stream) עבור Stream.
עברו ל- ref.invoke(provider.method()) כאשר אתם מיישמים mutations.

השלבים הבאים

מושגי ליבה

הבינו זהות של providers מבוססת ארגומנטים, הזרקת Scope, ובחירות עיצוב ללא codegen.

פתיחת מושגי הליבה

Providers וקריאות

למדו את התנהגות watch/read/listen ואת דפוסי הרענון של AsyncProvider.

פתיחת Providers

עיון ב-API

מצאו במהירות מתודות כמו invalidate, refreshValue, keepAlive ו-invoke.

פתיחת עיון ב-API