Add a random widget.
Fix variable names about counter.
This commit is contained in:
parent
e9d74e2326
commit
45f055cc5d
@ -4,6 +4,7 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:riverpod_flutter_tuts/widgets/notifier/counter_widget.dart';
|
||||
|
||||
import '../widgets/consumer/random.dart';
|
||||
import '../widgets/notifier/random_widget.dart';
|
||||
import '../widgets/simples/random.dart';
|
||||
|
||||
part 'gt.g.dart';
|
||||
@ -45,6 +46,7 @@ class MyApp extends ConsumerWidget {
|
||||
const Expanded(child: RandomWidget()),
|
||||
const Expanded(child: Random2Widget()),
|
||||
const Expanded(child: CounterWidget()),
|
||||
const Expanded(child: Random3Widget()),
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ part 'getRandomData.g.dart';
|
||||
@riverpod
|
||||
Future<MyRandom> getMyRandom(GetMyRandomRef ref) async {
|
||||
// Using package:http, we fetch a random activity from the Bored API.
|
||||
var ur = Uri.http('192.168.160.207:3000', '/p/random');
|
||||
var ur = Uri.http('127.0.0.1:3000', '/p/random');
|
||||
final response = await http.get(ur);
|
||||
// Using dart:convert, we then decode the JSON payload into a Map data structure.
|
||||
final json = jsonDecode(response.body) as Map<String, dynamic>;
|
||||
|
||||
@ -11,11 +11,11 @@ class CounterWidget extends ConsumerWidget {
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
// TODO: implement build
|
||||
|
||||
var myRandom = ref.watch(counterNotifierProvider);
|
||||
var counter = ref.watch(counterNotifierProvider);
|
||||
return Column(
|
||||
children: [
|
||||
Center(
|
||||
child: switch (myRandom) {
|
||||
child: switch (counter) {
|
||||
AsyncData(:final value ) => Text(
|
||||
'data: $value'
|
||||
),
|
||||
|
||||
29
lib/widgets/notifier/random.dart
Normal file
29
lib/widgets/notifier/random.dart
Normal file
@ -0,0 +1,29 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:riverpod_flutter_tuts/outerapi/auth/model/my_random.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
part 'random.g.dart';
|
||||
|
||||
Future<MyRandom> fetchData() async {
|
||||
var ur = Uri.http('127.0.0.1:3000', '/p/random');
|
||||
final response = await http.get(ur);
|
||||
// Using dart:convert, we then decode the JSON payload into a Map data structure.
|
||||
final json = jsonDecode(response.body) as Map<String, dynamic>;
|
||||
// Finally, we convert the Map into an Activity instance.
|
||||
return MyRandom.fromJson(json);
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class randomNotif extends _$randomNotif {
|
||||
@override
|
||||
Future<MyRandom> build() async{
|
||||
return fetchData();
|
||||
}
|
||||
|
||||
Future<void> again() async {
|
||||
state = AsyncLoading();
|
||||
// ref.invalidateSelf();
|
||||
ref.invalidateSelf();
|
||||
}
|
||||
}
|
||||
36
lib/widgets/notifier/random_widget.dart
Normal file
36
lib/widgets/notifier/random_widget.dart
Normal file
@ -0,0 +1,36 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:riverpod_flutter_tuts/widgets/notifier/counter.dart';
|
||||
import 'package:riverpod_flutter_tuts/widgets/notifier/random.dart';
|
||||
|
||||
|
||||
class Random3Widget extends ConsumerWidget {
|
||||
const Random3Widget({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
// TODO: implement build
|
||||
|
||||
var myRandom = ref.watch(randomNotifProvider);
|
||||
return Row(
|
||||
children: [
|
||||
Center(
|
||||
child: switch (myRandom) {
|
||||
AsyncData(:final value ) => Text(
|
||||
'data: $value'
|
||||
),
|
||||
AsyncError() => const Text('Oops, something unexpected happened'),
|
||||
_ => const CircularProgressIndicator(),
|
||||
}),
|
||||
!myRandom.isLoading ? ElevatedButton(onPressed:() {
|
||||
if (!myRandom.isLoading)
|
||||
ref.read(randomNotifProvider.notifier).again();
|
||||
}, child: Text(myRandom.isLoading ? "wait":"new"))
|
||||
:
|
||||
const Text("loading")
|
||||
,
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user