49 lines
1.3 KiB
Dart
49 lines
1.3 KiB
Dart
|
|
import 'package:flutter/material.dart';
|
||
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||
|
|
|
||
|
|
import '../widgets/simples/random.dart';
|
||
|
|
|
||
|
|
part 'gt.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: Column(
|
||
|
|
children: <Widget>[
|
||
|
|
Expanded(child: Text('1')),
|
||
|
|
Expanded(child: Text(value)),
|
||
|
|
Expanded(child: RandomWidget())
|
||
|
|
],
|
||
|
|
)
|
||
|
|
|
||
|
|
),
|
||
|
|
),
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|