Start to build synchronization logic
This commit is contained in:
@@ -4,6 +4,9 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:moneymgr_mobile/services/router/routes_list.dart';
|
||||
import 'package:moneymgr_mobile/services/storage/expenses.dart';
|
||||
import 'package:moneymgr_mobile/utils/time_utils.dart';
|
||||
import 'package:moneymgr_mobile/widgets/full_screen_error.dart';
|
||||
import 'package:moneymgr_mobile/widgets/loading_scaffold.dart';
|
||||
import 'package:moneymgr_mobile/widgets/synchronize_button.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
part 'scans_list_screen.g.dart';
|
||||
@@ -20,14 +23,21 @@ class ScansListScreen extends HookConsumerWidget {
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final expensesList = ref.watch(_expensesListProvider);
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: Text("Expenses")),
|
||||
body: switch (expensesList) {
|
||||
AsyncData(:final value) => _ExpensesList(list: value),
|
||||
AsyncError(:final error) => Center(child: Text('Load error: $error')),
|
||||
_ => const Center(child: CircularProgressIndicator()),
|
||||
},
|
||||
);
|
||||
|
||||
return switch (expensesList) {
|
||||
AsyncData(:final value) => Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text("Expenses"),
|
||||
actions: [value.isEmpty ? Container() : SynchronizeButton()],
|
||||
),
|
||||
body: _ExpensesList(list: value),
|
||||
),
|
||||
AsyncError(:final error) => FullScreenError(
|
||||
message: "Failed to load the list of expenses",
|
||||
error: error.toString(),
|
||||
),
|
||||
_ => const LoadingScaffold(title: "Expenses"),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user