Implement Phase 1 Android client: Flutter share receiver + upload service

- Register ACTION_SEND IntentFilter for image/* in AndroidManifest
- Kotlin MethodChannel bridge: extract image URI, original filename, resolve to file
- Flutter bottom sheet UI: thumbnail preview, note input (200 char), submit/cancel
- Upload service: multipart POST, Bearer auth, 10MB limit, offline cache, exponential backoff retry
- Configurable server URL and API token via SharedPreferences
- Minimal home screen with usage instructions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Misaka_Company
2026-05-21 17:05:44 +08:00
parent ff95d75eed
commit d11f33380c
133 changed files with 5672 additions and 2 deletions

23
lib/main.dart Normal file
View File

@@ -0,0 +1,23 @@
import 'package:flutter/material.dart';
import 'screens/home_screen.dart';
void main() {
runApp(const SnapLedgerApp());
}
class SnapLedgerApp extends StatelessWidget {
const SnapLedgerApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SnapLedger',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigo),
useMaterial3: true,
),
home: const HomeScreen(),
);
}
}