├── gen
└── todo_api
│ ├── analysis_options.yaml
│ ├── .openapi-generator
│ ├── VERSION
│ └── FILES
│ ├── .travis.yml
│ ├── .gitignore
│ ├── pubspec.yaml
│ ├── doc
│ ├── Priority.md
│ ├── PriorityEnum.md
│ ├── TodoParams.md
│ ├── TodoResponse.md
│ └── TodoApi.md
│ ├── test
│ ├── priority_test.dart
│ ├── priority_enum_test.dart
│ ├── todo_params_test.dart
│ ├── todo_response_test.dart
│ └── todo_api_test.dart
│ ├── lib
│ ├── auth
│ │ ├── authentication.dart
│ │ ├── oauth.dart
│ │ ├── http_basic_auth.dart
│ │ ├── api_key_auth.dart
│ │ └── http_bearer_auth.dart
│ ├── api_exception.dart
│ ├── api.dart
│ ├── model
│ │ ├── priority_enum.dart
│ │ ├── todo_params.dart
│ │ └── todo_response.dart
│ └── api_helper.dart
│ ├── .openapi-generator-ignore
│ ├── git_push.sh
│ └── README.md
├── ios
├── Runner
│ ├── Runner-Bridging-Header.h
│ ├── Assets.xcassets
│ │ ├── LaunchImage.imageset
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ ├── README.md
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-83.5x83.5@2x.png
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.storyboard
│ └── Info.plist
├── Flutter
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ ├── Flutter.podspec
│ └── AppFrameworkInfo.plist
├── Runner.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── RunnerTests
│ └── RunnerTests.swift
├── .gitignore
├── Podfile.lock
└── Podfile
├── .fvm
└── fvm_config.json
├── android
├── gradle.properties
├── app
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── drawable
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable-v21
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── values
│ │ │ │ │ └── styles.xml
│ │ │ │ └── values-night
│ │ │ │ │ └── styles.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── flutter_todo
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── AndroidManifest.xml
│ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ └── profile
│ │ │ └── AndroidManifest.xml
│ └── build.gradle
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── .gitignore
├── settings.gradle
└── build.gradle
├── images
└── 2.0x
│ ├── checkbox_checked.png
│ └── checkbox_unchecked.png
├── lib
├── Repository
│ ├── Abstraction
│ │ ├── NetworkIssue.dart
│ │ ├── TodoValues.dart
│ │ ├── Result.dart
│ │ ├── TodoManager.dart
│ │ ├── LongResult.dart
│ │ └── EntityGateway.dart
│ ├── Entities
│ │ ├── Entity.dart
│ │ ├── Todo.dart
│ │ └── Priority.dart
│ ├── Ephemeral
│ │ ├── EphemeralEntityGateway.dart
│ │ ├── EphemeralData.dart
│ │ ├── EphemeralTodo.dart
│ │ └── EphemeralTodoManager.dart
│ ├── Db
│ │ ├── SqlLiteEntityGateway.dart
│ │ ├── SqlLiteManager.dart
│ │ └── SqlLiteTodoManager.dart
│ └── Network
│ │ ├── NetworkClient.dart
│ │ ├── NetworkEntityGateway.dart
│ │ ├── RealNetworkClient.dart
│ │ ├── NetworkExceptionGuard.dart
│ │ └── NetworkTodoManager.dart
├── Scenes
│ ├── AppState
│ │ ├── TodoAppState.dart
│ │ ├── TodoItemStartMode.dart
│ │ └── AppState.dart
│ ├── Common
│ │ ├── Bloc.dart
│ │ ├── ActionDecoratedScene.dart
│ │ ├── ErrorMessages.dart
│ │ ├── Localize.dart
│ │ ├── FullScreenLoadingIndicator.dart
│ │ ├── StarterBloc.dart
│ │ ├── ErrorScene.dart
│ │ ├── BaseBlocBuilder.dart
│ │ ├── BlocBuilder.dart
│ │ ├── Waiting.dart
│ │ ├── BlocProvider.dart
│ │ ├── BlocConsumer.dart
│ │ ├── TodoOkDialog.dart
│ │ ├── TodoSwitch.dart
│ │ ├── BaseBlocConsumer.dart
│ │ ├── TodoTextField.dart
│ │ ├── TodoExclusive.dart
│ │ ├── CupertinoPopoverDatePicker.dart
│ │ └── Localization
│ │ │ └── TodoLocalizationsDelegate.dart
│ ├── TodoItem
│ │ ├── TodoItemDisplay
│ │ │ ├── Router
│ │ │ │ └── Router.dart
│ │ │ ├── Presenter
│ │ │ │ ├── ViewModel.dart
│ │ │ │ ├── PresenterOutput.dart
│ │ │ │ └── Presenter.dart
│ │ │ ├── UseCase
│ │ │ │ ├── UseCaseOutput.dart
│ │ │ │ ├── PresentationModel.dart
│ │ │ │ └── UseCase.dart
│ │ │ ├── Assembly
│ │ │ │ └── Assembly.dart
│ │ │ ├── TodoItemDisplay.dart
│ │ │ └── View
│ │ │ │ └── Scene.dart
│ │ ├── TodoItemRouter
│ │ │ ├── Router
│ │ │ │ └── Router.dart
│ │ │ ├── UseCase
│ │ │ │ ├── UseCaseOutput.dart
│ │ │ │ └── UseCase.dart
│ │ │ ├── Presenter
│ │ │ │ ├── PresenterOutput.dart
│ │ │ │ └── Presenter.dart
│ │ │ ├── Assembly
│ │ │ │ └── Assembly.dart
│ │ │ ├── TodoItemRouter.dart
│ │ │ └── View
│ │ │ │ └── Scene.dart
│ │ └── TodoItemEdit
│ │ │ ├── Router
│ │ │ └── Router.dart
│ │ │ ├── Presenter
│ │ │ ├── PresenterOutput.dart
│ │ │ ├── ViewModel.dart
│ │ │ └── Presenter.dart
│ │ │ ├── Assembly
│ │ │ └── Assembly.dart
│ │ │ ├── UseCase
│ │ │ ├── UseCaseOutput.dart
│ │ │ ├── PresentationModel.dart
│ │ │ └── UseCase.dart
│ │ │ └── TodoItemEdit.dart
│ ├── TodoRootRouter
│ │ ├── Presenter
│ │ │ ├── PresenterOutput.dart
│ │ │ └── Presenter.dart
│ │ ├── Assembly
│ │ │ └── Assembly.dart
│ │ ├── TodoRootRouter.dart
│ │ └── View
│ │ │ └── Scene.dart
│ └── TodoList
│ │ ├── Router
│ │ └── Router.dart
│ │ ├── Presenter
│ │ ├── PresenterOutput.dart
│ │ ├── ViewModel.dart
│ │ └── Presenter.dart
│ │ ├── UseCase
│ │ ├── UseCaseOutput.dart
│ │ ├── PresentationModel.dart
│ │ └── UseCase.dart
│ │ ├── Assembly
│ │ └── Assembly.dart
│ │ ├── TodoList.dart
│ │ └── View
│ │ ├── CheckBox.dart
│ │ ├── Cell.dart
│ │ └── Scene.dart
└── main.dart
├── api_generator
├── todo_api.sh
└── todo_api.yaml
├── analysis_options.yaml
├── .metadata
├── .gitignore
├── README.md
└── pubspec.yaml
/gen/todo_api/analysis_options.yaml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/gen/todo_api/.openapi-generator/VERSION:
--------------------------------------------------------------------------------
1 | 7.0.0
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/.fvm/fvm_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "flutterSdkVersion": "3.10.4",
3 | "flavors": {}
4 | }
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/images/2.0x/checkbox_checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/images/2.0x/checkbox_checked.png
--------------------------------------------------------------------------------
/images/2.0x/checkbox_unchecked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/images/2.0x/checkbox_unchecked.png
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/lib/Repository/Abstraction/NetworkIssue.dart:
--------------------------------------------------------------------------------
1 | // Copyright © 2019 Lyle Resnick. All rights reserved.
2 |
3 | enum NetworkIssue { noNetwork }
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/lib/Scenes/AppState/TodoAppState.dart:
--------------------------------------------------------------------------------
1 | import 'AppState.dart';
2 |
3 | class TodoAppState extends AppState {
4 | TodoAppState._();
5 | static final instance = TodoAppState._();
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lyleresnick/FlutterCleanTodo/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/flutter_todo/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.flutter_todo
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/lib/Scenes/Common/Bloc.dart:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2020 Lyle Resnick. All rights reserved.
2 |
3 | abstract interface class Bloc