full app done

This commit is contained in:
davmar
2026-09-18 00:01:42 +02:00
parent 8475abeddb
commit 78fd23f69f
74 changed files with 8104 additions and 1963 deletions
+27 -62
View File
@@ -1,67 +1,41 @@
# MyApp
# Values Sort
Generic Flutter Android starter built with Flutter **3.47** (Dart **3.13**), Material 3, null safety, and [Provider](https://pub.dev/packages/provider) for state management.
Flutter Android app for a guided personal-values card-sort practice.
Built with Flutter **3.47** (Dart **3.13**), Material 3, Provider, and local persistence.
Package name: `com.example.myapp`
## Features
## Practice flow
- Splash screen that fades into the main shell
- Bottom navigation: Home, Search, Profile, Settings
- `ListView.builder` catalog with rounded, shadowed cards
- Detail screen with a matching `Hero` animation
- Light / dark / system theme, persisted with `shared_preferences`
- Add-item form with validation
- Mock catalog plus an `http` client aimed at JSONPlaceholder (toggle in Settings)
1. Welcome (+ how-it-works guide)
2. Sort each value into five reflective piles
3. Review / refine piles
4. Rank your most important values
5. Reflect with journal prompts
Progress (stage, piles, ranking, reflections) is saved on device with `shared_preferences`.
## Folder structure
```
android-flutter-app-generic/
├── android/ # Android embedding, Gradle, manifest
├── lib/
│ ├── main.dart # Entry point, Provider scope, MaterialApp
│ ├── models/
│ │ └── item.dart # Item + ItemCategory
│ ├── providers/
│ │ ├── item_provider.dart # Catalog ChangeNotifier
│ │ └── theme_provider.dart # ThemeMode ChangeNotifier
│ ├── screens/
│ │ ├── splash_screen.dart
│ │ ├── main_shell.dart # NavigationBar host
│ │ ├── home_screen.dart
│ │ ├── search_screen.dart
│ │ ├── profile_screen.dart
│ │ ├── settings_screen.dart
│ │ ├── item_detail_screen.dart
│ │ └── add_item_screen.dart
│ ├── services/
│ │ ├── storage_service.dart # shared_preferences wrapper
│ │ ├── item_api.dart # http placeholder
│ │ ├── fake_item_data.dart # Offline sample catalog
│ │ └── item_repository.dart # Mock vs remote switch
│ ├── utils/
│ │ ├── app_theme.dart # Material 3 light/dark themes
│ │ ├── constants.dart
│ │ └── helpers.dart
│ └── widgets/
│ ├── app_text_field.dart
│ ├── empty_state.dart
│ ├── item_card.dart
│ ├── item_hero_badge.dart
│ ├── loading_view.dart
│ └── responsive_body.dart
├── test/
│ └── widget_test.dart
└── pubspec.yaml
lib/
├── main.dart
├── data/values_deck.dart
├── models/
├── providers/
├── screens/ # welcome → sort → overview → rank → reflect
├── services/storage_service.dart
├── utils/
└── widgets/
assets/
├── data/values_deck.json
└── images/emblem.png
stitch/ # exported Stitch HTML/PNG design references
```
## Run the app
You need the [Flutter SDK](https://docs.flutter.dev/get-started/install) (3.47 or newer) and an Android emulator or device.
## Run
```bash
cd android-flutter-app-generic
flutter pub get
flutter run
```
@@ -69,15 +43,6 @@ flutter run
Useful extras:
```bash
flutter devices # list emulators / devices
flutter run -d android # target Android explicitly
flutter analyze # static analysis
flutter test # widget + unit tests
flutter analyze
flutter test
```
On first Android run, Flutter will download a Gradle distribution and compile the app. Accept any Android licenses with `flutter doctor --android-licenses` if prompted.
## Theme and data
- Open **Settings** to switch System / Light / Dark. The choice is stored locally.
- Turn on **Use remote sample API** to fetch posts from `https://jsonplaceholder.typicode.com/posts` through the `http` package. If the request fails, the app falls back to the bundled mock list.