સ્પષ્ટ container માલિકી સાથે Flutter એકીકરણ.

ProviderScope એક container નો માલિક બની શકે છે અથવા બહારથી container મેળવી શકે છે. Consumer APIs WidgetRef ઍક્સેસને Riverpod-શૈલીના કોડ સાથે સુસંગત રાખે છે.

ProviderScope માલિકી

Container ની માલિકી dispose કરવાની જવાબદારી બદલે છે.

આંતરિક container

ProviderScope(child: ...) આપમેળે dispose થાય છે

બાહ્ય container

ProviderScope(container: c, ...) માટે caller એ c.dispose() કરવું જરૂરી છે

અનિયંત્રિત scope

UncontrolledProviderScope ક્યારેય container ને dispose કરતું નથી

સામાન્ય ખોટ

Widget tests માં, બહારથી inject કરાયેલ ProviderContainer ને dispose કરવાનું યાદ રાખો, જેથી pending timer leaks ટાળી શકાય.

Consumer પ્રકારો

બધા વિકલ્પો WidgetRef પ્રદાન કરે છે; વિજેટ શૈલી અને સ્થાનિક state ની જરૂરિયાતો મુજબ પસંદ કરો.

એપનું મૂળ

ક્યારે કયો વાપરવો

Consumer: નાના reactive વિસ્તારો માટે સ્થાનિક builder block.
ConsumerWidget: build(context, ref) ધરાવતું stateless widget.
ConsumerStatefulWidget: ConsumerState અંદર ref ધરાવતું stateful widget.

ઉદાહરણ: ConsumerStatefulWidget

જ્યારે તમને WidgetRef અને સ્થાનિક mutable UI state બંનેની જરૂર હોય ત્યારે ConsumerState વાપરો.

class HomePage extends ConsumerStatefulWidget {
  const HomePage({super.key});

  @override
  ConsumerState<HomePage> createState() => _HomePageState();
}

class _HomePageState extends ConsumerState<HomePage> {
  bool expanded = false;

  @override
  Widget build(BuildContext context) {
    final user = ref.watch(currentUser);
    return Column(
      children: [
        Text('$user'),
        Switch(
          value: expanded,
          onChanged: (v) => setState(() => expanded = v),
        ),
      ],
    );
  }
}
Consumer ની આંતરિક પ્રક્રિયા rebuild ને post-frame સુધી શેડ્યૂલ કરે છે, જેથી setState દરમિયાન build સંબંધિત સમસ્યાઓ ઓછી થાય છે.
WidgetRef.watch નો ઉપયોગ ફક્ત એવા મૂલ્યો માટે કરો જે rebuild શરૂ કરવાના હોય.
Side effects ને build બહાર રાખો; callbacks અને invoke/refresh પદ્ધતિઓ વાપરો.

આગલા પગલાં

ટેસ્ટિંગ

unit અને widget tests માં container lifecycle, overrides, અને async updates માન્ય કરો.

ટેસ્ટિંગ ખોલો

API સંદર્ભ

ProviderScope, WidgetRef, અને container methods માટે signatures જુઓ.

API સંદર્ભ ખોલો