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