Can save expenses to local list
This commit is contained in:
@ -4,6 +4,7 @@ import 'dart:typed_data';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:moneymgr_mobile/services/storage/expenses.dart';
|
||||
import 'package:moneymgr_mobile/widgets/expense_editor.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:scanbot_sdk/scanbot_sdk.dart';
|
||||
@ -11,6 +12,7 @@ import 'package:scanbot_sdk/scanbot_sdk_ui_v2.dart' hide IconButton, EdgeInsets;
|
||||
|
||||
part 'scan_screen.g.dart';
|
||||
|
||||
/// Scan a document & return generated PDF as byte file
|
||||
@riverpod
|
||||
Future<Uint8List?> _scanDocument(Ref ref) async {
|
||||
var configuration = DocumentScanningFlow(
|
||||
@ -45,7 +47,8 @@ class ScanScreen extends HookConsumerWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final boredSuggestion = ref.watch(_scanDocumentProvider);
|
||||
final scanDocProvider = ref.watch(_scanDocumentProvider);
|
||||
final expenses = ref.watch(expensesProvider).requireValue;
|
||||
|
||||
restartScan() async {
|
||||
try {
|
||||
@ -56,13 +59,19 @@ class ScanScreen extends HookConsumerWidget {
|
||||
}
|
||||
}
|
||||
|
||||
// Perform a switch-case on the result to handle loading/error states
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: switch (boredSuggestion) {
|
||||
child: switch (scanDocProvider) {
|
||||
AsyncData(:final value) when value != null => ExpenseEditor(
|
||||
file: value,
|
||||
onFinished: (e) {},
|
||||
onFinished: (expense) async {
|
||||
await expenses.add(
|
||||
info: expense,
|
||||
fileContent: value,
|
||||
fileMimeType: "application/pdf",
|
||||
);
|
||||
restartScan();
|
||||
},
|
||||
onRescan: restartScan,
|
||||
),
|
||||
|
||||
@ -103,7 +112,7 @@ class ScanErrorScreen extends StatelessWidget {
|
||||
Spacer(flex: 5),
|
||||
Text("An error occurred while scanning"),
|
||||
Spacer(flex: 1),
|
||||
Text(message),
|
||||
Text(message, textAlign: TextAlign.center),
|
||||
Spacer(flex: 1),
|
||||
MaterialButton(
|
||||
onPressed: onTryAgain,
|
||||
|
Reference in New Issue
Block a user