Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Riverpod Fundamentals | State Management
Flutter State and Data Handling

bookRiverpod Fundamentals

Sveip for å vise menyen

Riverpod is a modern state management library for Flutter that stands out for its robust compile-time safety and flexibility. Unlike older solutions, Riverpod ensures that errors related to state management are caught during development, not at runtime. This leads to more reliable, maintainable code and a smoother debugging experience. By making dependencies explicit and supporting advanced features like hot-reload, Riverpod helps you build scalable Flutter apps with confidence.

main.dart

main.dart

copy
123456789101112131415161718192021222324252627282930313233343536373839
import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; // Define a StateProvider for an integer counter. final counterProvider = StateProvider<int>((ref) => 0); void main() { runApp( ProviderScope( child: MyApp(), ), ); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: CounterScreen(), ); } } class CounterScreen extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final count = ref.watch(counterProvider); return Scaffold( appBar: AppBar(title: Text('Riverpod Counter')), body: Center( child: Text('Count: $count', style: TextStyle(fontSize: 32)), ), floatingActionButton: FloatingActionButton( onPressed: () => ref.read(counterProvider.notifier).state++, child: Icon(Icons.add), ), ); } }

In Riverpod, a provider is a way to declare a piece of state or logic that can be shared and accessed throughout your app. The counterProvider in the example above is a StateProvider, which holds a simple integer value. A consumer is any widget or function that reads and reacts to changes in a provider's value. In the CounterScreen widget, you use ref.watch(counterProvider) to listen to the counter's value, and ref.read(counterProvider.notifier).state++ to update it. This separation of state declaration and consumption makes your code more modular and testable.

main.dart

main.dart

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243
import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; // Define a FutureProvider that fetches a string asynchronously. final helloProvider = FutureProvider<String>((ref) async { await Future.delayed(Duration(seconds: 2)); return 'Hello from Riverpod!'; }); void main() { runApp( ProviderScope( child: MyApp(), ), ); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: AsyncHelloScreen(), ); } } class AsyncHelloScreen extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final asyncValue = ref.watch(helloProvider); return Scaffold( appBar: AppBar(title: Text('FutureProvider Example')), body: Center( child: asyncValue.when( data: (value) => Text(value, style: TextStyle(fontSize: 24)), loading: () => CircularProgressIndicator(), error: (err, stack) => Text('Error: $err'), ), ), ); } }
question mark

Which of the following is a key difference between Riverpod and the original Provider package in Flutter?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 1. Kapittel 3
some-alt