40 lines
1.1 KiB
Dart
40 lines
1.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
|
|
part 'main_hello_riverpod.g.dart';
|
|
|
|
// We create a "provider", which will store a value (here "Hello world").
|
|
// By using a provider, this allows us to mock/override the value exposed.
|
|
@riverpod
|
|
String helloWorld(HelloWorldRef ref) {
|
|
return 'Hello world';
|
|
}
|
|
|
|
void main() {
|
|
runApp(
|
|
// For widgets to be able to read providers, we need to wrap the entire
|
|
// application in a "ProviderScope" widget.
|
|
// This is where the state of our providers will be stored.
|
|
ProviderScope(
|
|
child: MyApp(),
|
|
),
|
|
);
|
|
}
|
|
|
|
// Extend ConsumerWidget instead of StatelessWidget, which is exposed by Riverpod
|
|
class MyApp extends ConsumerWidget {
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final String value = ref.watch(helloWorldProvider);
|
|
|
|
return MaterialApp(
|
|
home: Scaffold(
|
|
appBar: AppBar(title: const Text('Example')),
|
|
body: Center(
|
|
child: Text(value),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
} |