feat: Add receipt import functionality with file upload and parsing

- Implemented receipt file upload in ImportRepository with multipart request handling.
- Created ParsedReceiptItem model for parsed receipt data.
- Added ReceiptImportTab for user interface to upload and review receipts.
- Updated ImportScreen to include the new ReceiptImportTab alongside RecipeImportTab.
- Introduced flutter_bootstrap.js and index.html for web app initialization.
- Added wimp.wasm and flutter.js for enhanced web performance and capabilities.
This commit is contained in:
Nils-Johan Gynther
2026-04-23 19:24:53 +02:00
parent 108c633d0e
commit cd4274575e
44 changed files with 63900 additions and 657 deletions
@@ -6,9 +6,7 @@
// @dart = 3.3
import 'dart:io'; // flutter_ignore: dart_io_import.
import 'package:file_picker/file_picker.dart' as file_picker;
import 'package:shared_preferences_android/shared_preferences_android.dart' as shared_preferences_android;
import 'package:file_picker/file_picker.dart' as file_picker;
import 'package:shared_preferences_foundation/shared_preferences_foundation.dart' as shared_preferences_foundation;
import 'package:file_picker/file_picker.dart' as file_picker;
import 'package:path_provider_linux/path_provider_linux.dart' as path_provider_linux;
@@ -25,15 +23,6 @@ class _PluginRegistrant {
@pragma('vm:entry-point')
static void register() {
if (Platform.isAndroid) {
try {
file_picker.FilePickerIO.registerWith();
} catch (err) {
print(
'`file_picker` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
shared_preferences_android.SharedPreferencesAndroid.registerWith();
} catch (err) {
@@ -44,15 +33,6 @@ class _PluginRegistrant {
}
} else if (Platform.isIOS) {
try {
file_picker.FilePickerIO.registerWith();
} catch (err) {
print(
'`file_picker` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
shared_preferences_foundation.SharedPreferencesFoundation.registerWith();
} catch (err) {