initial commit
734
.dart_tool/package_config.json
Normal file
@ -0,0 +1,734 @@
|
||||
{
|
||||
"configVersion": 2,
|
||||
"packages": [
|
||||
{
|
||||
"name": "_fe_analyzer_shared",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/_fe_analyzer_shared-47.0.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "analyzer",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/analyzer-4.7.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "args",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/args-2.3.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "async",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/async-2.9.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "auto_route",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/auto_route-5.0.4",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "auto_route_generator",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/auto_route_generator-5.0.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "boolean_selector",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "build",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build-2.3.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "build_config",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_config-1.1.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "build_daemon",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_daemon-3.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "build_resolvers",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_resolvers-2.0.10",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "build_runner",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_runner-2.3.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "build_runner_core",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_runner_core-7.2.6",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "built_collection",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/built_collection-5.1.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "built_value",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/built_value-8.4.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "characters",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "checked_yaml",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/checked_yaml-2.0.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "clock",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "code_builder",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/code_builder-4.3.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "collection",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "connectivity_plus",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.9",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "connectivity_plus_linux",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "connectivity_plus_macos",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.6",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "connectivity_plus_platform_interface",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_platform_interface-1.2.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "connectivity_plus_web",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.5",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "connectivity_plus_windows",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "convert",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/convert-3.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "coverage",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/coverage-1.6.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.15"
|
||||
},
|
||||
{
|
||||
"name": "crypto",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "cupertino_icons",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "dart_style",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dart_style-2.2.4",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "dartz",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dartz-0.10.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "dbus",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dbus-0.7.8",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.15"
|
||||
},
|
||||
{
|
||||
"name": "diff_match_patch",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/diff_match_patch-0.4.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "dio",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dio-4.0.6",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "equatable",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/equatable-2.0.5",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "fake_async",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "ffi",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/ffi-2.0.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "file",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/file-6.1.4",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "fixnum",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/fixnum-1.0.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "flutter",
|
||||
"rootUri": "file:///Users/theutsavg/Downloads/sdk/flutter/packages/flutter",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "flutter_lints",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "flutter_riverpod",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/flutter_riverpod-2.0.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "flutter_test",
|
||||
"rootUri": "file:///Users/theutsavg/Downloads/sdk/flutter/packages/flutter_test",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "flutter_web_plugins",
|
||||
"rootUri": "file:///Users/theutsavg/Downloads/sdk/flutter/packages/flutter_web_plugins",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "freezed",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/freezed-2.2.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "freezed_annotation",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/freezed_annotation-2.2.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "frontend_server_client",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/frontend_server_client-2.1.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "glob",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/glob-2.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.15"
|
||||
},
|
||||
{
|
||||
"name": "graphs",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/graphs-2.2.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "http_mock_adapter",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/http_mock_adapter-0.3.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "http_multi_server",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/http_multi_server-3.2.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "http_parser",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "io",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/io-1.0.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "js",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/js-0.6.4",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.16"
|
||||
},
|
||||
{
|
||||
"name": "json_annotation",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/json_annotation-4.7.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "json_serializable",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/json_serializable-6.5.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "lcov_dart",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/lcov_dart-7.0.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "lints",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/lints-2.0.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "logging",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/logging-1.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "matcher",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "material_color_utilities",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.13"
|
||||
},
|
||||
{
|
||||
"name": "meta",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "mime",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/mime-1.0.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "mockito",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/mockito-5.3.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "mocktail",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/mocktail-0.3.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "nm",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/nm-0.5.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "node_preamble",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/node_preamble-2.0.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "package_config",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/package_config-2.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "path",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path-1.8.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "path_provider_linux",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.8",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "path_provider_platform_interface",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.5",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "path_provider_windows",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "petitparser",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/petitparser-5.0.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.16"
|
||||
},
|
||||
{
|
||||
"name": "platform",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/platform-3.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "plugin_platform_interface",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.1.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "pool",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/pool-1.5.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "process",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/process-4.2.4",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "pub_semver",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/pub_semver-2.1.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "pubspec_parse",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/pubspec_parse-1.2.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "riverpod",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/riverpod-2.0.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "shared_preferences",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.17",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "shared_preferences_android",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.15",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "shared_preferences_foundation",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "shared_preferences_linux",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "shared_preferences_platform_interface",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_platform_interface-2.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "shared_preferences_web",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.4",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "shared_preferences_windows",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "shelf",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf-1.4.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "shelf_packages_handler",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf_packages_handler-3.0.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "shelf_static",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf_static-1.1.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "shelf_web_socket",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-1.0.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "sky_engine",
|
||||
"rootUri": "file:///Users/theutsavg/Downloads/sdk/flutter/bin/cache/pkg/sky_engine",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "source_gen",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_gen-1.2.6",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "source_helper",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_helper-1.3.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "source_map_stack_trace",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_map_stack_trace-2.1.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "source_maps",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_maps-0.10.11",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.18"
|
||||
},
|
||||
{
|
||||
"name": "source_span",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "stack_trace",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "state_notifier",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/state_notifier-0.7.2+1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "state_notifier_test",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/state_notifier_test-0.0.9",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "stream_channel",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "stream_transform",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/stream_transform-2.0.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "string_scanner",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "term_glyph",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "test",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test-1.21.4",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "test_api",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "test_core",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test_core-0.4.16",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "test_coverage_badge",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test_coverage_badge-0.2.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "timing",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/timing-1.0.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "typed_data",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "vector_math",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "vm_service",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/vm_service-9.4.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.15"
|
||||
},
|
||||
{
|
||||
"name": "watcher",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/watcher-1.0.2",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.14"
|
||||
},
|
||||
{
|
||||
"name": "web_socket_channel",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-2.2.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "webkit_inspection_protocol",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/webkit_inspection_protocol-1.2.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "win32",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/win32-3.1.3",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "xdg_directories",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/xdg_directories-1.0.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "xml",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/xml-6.1.0",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
},
|
||||
{
|
||||
"name": "yaml",
|
||||
"rootUri": "file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/yaml-3.1.1",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.12"
|
||||
},
|
||||
{
|
||||
"name": "flutter_project",
|
||||
"rootUri": "../",
|
||||
"packageUri": "lib/",
|
||||
"languageVersion": "2.17"
|
||||
}
|
||||
],
|
||||
"generated": "2023-03-02T05:13:43.781981Z",
|
||||
"generator": "pub",
|
||||
"generatorVersion": "2.18.4"
|
||||
}
|
485
.dart_tool/package_config_subset
Normal file
@ -0,0 +1,485 @@
|
||||
_fe_analyzer_shared
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/_fe_analyzer_shared-47.0.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/_fe_analyzer_shared-47.0.0/lib/
|
||||
analyzer
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/analyzer-4.7.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/analyzer-4.7.0/lib/
|
||||
args
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/
|
||||
async
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/async-2.9.0/lib/
|
||||
auto_route
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/auto_route-5.0.4/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/auto_route-5.0.4/lib/
|
||||
auto_route_generator
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/auto_route_generator-5.0.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/auto_route_generator-5.0.2/lib/
|
||||
boolean_selector
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib/
|
||||
build
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build-2.3.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build-2.3.1/lib/
|
||||
build_config
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_config-1.1.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_config-1.1.1/lib/
|
||||
build_daemon
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_daemon-3.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_daemon-3.1.0/lib/
|
||||
build_resolvers
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_resolvers-2.0.10/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_resolvers-2.0.10/lib/
|
||||
build_runner
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_runner-2.3.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_runner-2.3.0/lib/
|
||||
build_runner_core
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_runner_core-7.2.6/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/build_runner_core-7.2.6/lib/
|
||||
built_collection
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/built_collection-5.1.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/built_collection-5.1.1/lib/
|
||||
built_value
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/built_value-8.4.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/built_value-8.4.1/lib/
|
||||
characters
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/characters-1.2.1/lib/
|
||||
checked_yaml
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/checked_yaml-2.0.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/checked_yaml-2.0.1/lib/
|
||||
clock
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/clock-1.1.1/lib/
|
||||
code_builder
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/code_builder-4.3.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/code_builder-4.3.0/lib/
|
||||
collection
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/collection-1.16.0/lib/
|
||||
connectivity_plus
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.9/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.9/lib/
|
||||
connectivity_plus_linux
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/lib/
|
||||
connectivity_plus_macos
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.6/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.6/lib/
|
||||
connectivity_plus_platform_interface
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_platform_interface-1.2.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_platform_interface-1.2.3/lib/
|
||||
connectivity_plus_web
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.5/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.5/lib/
|
||||
connectivity_plus_windows
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/lib/
|
||||
convert
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/convert-3.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/convert-3.1.0/lib/
|
||||
coverage
|
||||
2.15
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/coverage-1.6.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/coverage-1.6.1/lib/
|
||||
crypto
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/crypto-3.0.2/lib/
|
||||
cupertino_icons
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5/lib/
|
||||
dart_style
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dart_style-2.2.4/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dart_style-2.2.4/lib/
|
||||
dartz
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dartz-0.10.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dartz-0.10.1/lib/
|
||||
dbus
|
||||
2.15
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dbus-0.7.8/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dbus-0.7.8/lib/
|
||||
diff_match_patch
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/diff_match_patch-0.4.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/diff_match_patch-0.4.1/lib/
|
||||
dio
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dio-4.0.6/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/dio-4.0.6/lib/
|
||||
equatable
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/equatable-2.0.5/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/equatable-2.0.5/lib/
|
||||
fake_async
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/fake_async-1.3.1/lib/
|
||||
ffi
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/ffi-2.0.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/ffi-2.0.1/lib/
|
||||
file
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/file-6.1.4/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/file-6.1.4/lib/
|
||||
fixnum
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/fixnum-1.0.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/fixnum-1.0.1/lib/
|
||||
flutter_lints
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/flutter_lints-2.0.1/lib/
|
||||
flutter_riverpod
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/flutter_riverpod-2.0.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/flutter_riverpod-2.0.2/lib/
|
||||
freezed
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/freezed-2.2.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/freezed-2.2.0/lib/
|
||||
freezed_annotation
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/freezed_annotation-2.2.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/freezed_annotation-2.2.0/lib/
|
||||
frontend_server_client
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/frontend_server_client-2.1.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/frontend_server_client-2.1.3/lib/
|
||||
glob
|
||||
2.15
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/glob-2.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/glob-2.1.0/lib/
|
||||
graphs
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/graphs-2.2.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/graphs-2.2.0/lib/
|
||||
http_mock_adapter
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/http_mock_adapter-0.3.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/http_mock_adapter-0.3.3/lib/
|
||||
http_multi_server
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/http_multi_server-3.2.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/http_multi_server-3.2.1/lib/
|
||||
http_parser
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.1/lib/
|
||||
io
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/io-1.0.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/io-1.0.3/lib/
|
||||
js
|
||||
2.16
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/js-0.6.4/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/js-0.6.4/lib/
|
||||
json_annotation
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/json_annotation-4.7.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/json_annotation-4.7.0/lib/
|
||||
json_serializable
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/json_serializable-6.5.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/json_serializable-6.5.3/lib/
|
||||
lcov_dart
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/lcov_dart-7.0.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/lcov_dart-7.0.0/lib/
|
||||
lints
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/lints-2.0.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/lints-2.0.0/lib/
|
||||
logging
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/logging-1.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/logging-1.1.0/lib/
|
||||
matcher
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.12/lib/
|
||||
material_color_utilities
|
||||
2.13
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5/lib/
|
||||
meta
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/meta-1.8.0/lib/
|
||||
mime
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/mime-1.0.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/mime-1.0.2/lib/
|
||||
mockito
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/mockito-5.3.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/mockito-5.3.2/lib/
|
||||
mocktail
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/mocktail-0.3.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/mocktail-0.3.0/lib/
|
||||
nm
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/nm-0.5.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/nm-0.5.0/lib/
|
||||
node_preamble
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/node_preamble-2.0.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/node_preamble-2.0.1/lib/
|
||||
package_config
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/package_config-2.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/package_config-2.1.0/lib/
|
||||
path
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path-1.8.2/lib/
|
||||
path_provider_linux
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.8/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.8/lib/
|
||||
path_provider_platform_interface
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.5/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.5/lib/
|
||||
path_provider_windows
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/lib/
|
||||
petitparser
|
||||
2.16
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/petitparser-5.0.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/petitparser-5.0.0/lib/
|
||||
platform
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/platform-3.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/platform-3.1.0/lib/
|
||||
plugin_platform_interface
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.1.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.1.3/lib/
|
||||
pool
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/pool-1.5.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/pool-1.5.1/lib/
|
||||
process
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/process-4.2.4/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/process-4.2.4/lib/
|
||||
pub_semver
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/pub_semver-2.1.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/pub_semver-2.1.2/lib/
|
||||
pubspec_parse
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/pubspec_parse-1.2.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/pubspec_parse-1.2.1/lib/
|
||||
riverpod
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/riverpod-2.0.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/riverpod-2.0.2/lib/
|
||||
shared_preferences
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.17/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.17/lib/
|
||||
shared_preferences_android
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.15/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.15/lib/
|
||||
shared_preferences_foundation
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.3/lib/
|
||||
shared_preferences_linux
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.3/lib/
|
||||
shared_preferences_platform_interface
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_platform_interface-2.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_platform_interface-2.1.0/lib/
|
||||
shared_preferences_web
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.4/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.4/lib/
|
||||
shared_preferences_windows
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.3/lib/
|
||||
shelf
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf-1.4.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf-1.4.0/lib/
|
||||
shelf_packages_handler
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf_packages_handler-3.0.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf_packages_handler-3.0.1/lib/
|
||||
shelf_static
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf_static-1.1.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf_static-1.1.1/lib/
|
||||
shelf_web_socket
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-1.0.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-1.0.2/lib/
|
||||
source_gen
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_gen-1.2.6/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_gen-1.2.6/lib/
|
||||
source_helper
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_helper-1.3.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_helper-1.3.3/lib/
|
||||
source_map_stack_trace
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_map_stack_trace-2.1.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_map_stack_trace-2.1.1/lib/
|
||||
source_maps
|
||||
2.18
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_maps-0.10.11/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_maps-0.10.11/lib/
|
||||
source_span
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/source_span-1.9.0/lib/
|
||||
stack_trace
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/lib/
|
||||
state_notifier
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/state_notifier-0.7.2+1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/state_notifier-0.7.2+1/lib/
|
||||
state_notifier_test
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/state_notifier_test-0.0.9/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/state_notifier_test-0.0.9/lib/
|
||||
stream_channel
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib/
|
||||
stream_transform
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/stream_transform-2.0.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/stream_transform-2.0.1/lib/
|
||||
string_scanner
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.1/lib/
|
||||
term_glyph
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.1/lib/
|
||||
test
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test-1.21.4/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test-1.21.4/lib/
|
||||
test_api
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.12/lib/
|
||||
test_core
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test_core-0.4.16/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test_core-0.4.16/lib/
|
||||
test_coverage_badge
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test_coverage_badge-0.2.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/test_coverage_badge-0.2.0/lib/
|
||||
timing
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/timing-1.0.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/timing-1.0.0/lib/
|
||||
typed_data
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.1/lib/
|
||||
vector_math
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.2/lib/
|
||||
vm_service
|
||||
2.15
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/vm_service-9.4.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/vm_service-9.4.0/lib/
|
||||
watcher
|
||||
2.14
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/watcher-1.0.2/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/watcher-1.0.2/lib/
|
||||
web_socket_channel
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-2.2.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-2.2.0/lib/
|
||||
webkit_inspection_protocol
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/webkit_inspection_protocol-1.2.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/webkit_inspection_protocol-1.2.0/lib/
|
||||
win32
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/win32-3.1.3/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/win32-3.1.3/lib/
|
||||
xdg_directories
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/xdg_directories-1.0.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/xdg_directories-1.0.0/lib/
|
||||
xml
|
||||
2.17
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/xml-6.1.0/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/xml-6.1.0/lib/
|
||||
yaml
|
||||
2.12
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/yaml-3.1.1/
|
||||
file:///Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/yaml-3.1.1/lib/
|
||||
flutter_project
|
||||
2.17
|
||||
file:///Users/theutsavg/Desktop/fyp/riverpod_clean_arch_tdd/
|
||||
file:///Users/theutsavg/Desktop/fyp/riverpod_clean_arch_tdd/lib/
|
||||
sky_engine
|
||||
2.12
|
||||
file:///Users/theutsavg/Downloads/sdk/flutter/bin/cache/pkg/sky_engine/
|
||||
file:///Users/theutsavg/Downloads/sdk/flutter/bin/cache/pkg/sky_engine/lib/
|
||||
flutter
|
||||
2.17
|
||||
file:///Users/theutsavg/Downloads/sdk/flutter/packages/flutter/
|
||||
file:///Users/theutsavg/Downloads/sdk/flutter/packages/flutter/lib/
|
||||
flutter_test
|
||||
2.17
|
||||
file:///Users/theutsavg/Downloads/sdk/flutter/packages/flutter_test/
|
||||
file:///Users/theutsavg/Downloads/sdk/flutter/packages/flutter_test/lib/
|
||||
flutter_web_plugins
|
||||
2.17
|
||||
file:///Users/theutsavg/Downloads/sdk/flutter/packages/flutter_web_plugins/
|
||||
file:///Users/theutsavg/Downloads/sdk/flutter/packages/flutter_web_plugins/lib/
|
||||
2
|
1
.dart_tool/version
Normal file
@ -0,0 +1 @@
|
||||
3.3.8
|
14
.flutter-plugins
Normal file
@ -0,0 +1,14 @@
|
||||
# This is a generated file; do not edit or check into version control.
|
||||
connectivity_plus=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.9/
|
||||
connectivity_plus_linux=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/
|
||||
connectivity_plus_macos=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.6/
|
||||
connectivity_plus_web=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.5/
|
||||
connectivity_plus_windows=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/
|
||||
path_provider_linux=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.8/
|
||||
path_provider_windows=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/
|
||||
shared_preferences=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.17/
|
||||
shared_preferences_android=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.15/
|
||||
shared_preferences_foundation=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.3/
|
||||
shared_preferences_linux=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.3/
|
||||
shared_preferences_web=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.4/
|
||||
shared_preferences_windows=/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.3/
|
1
.flutter-plugins-dependencies
Normal file
@ -0,0 +1 @@
|
||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.9/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.3/","native_build":true,"dependencies":[]}],"android":[{"name":"connectivity_plus","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.9/","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.15/","native_build":true,"dependencies":[]}],"macos":[{"name":"connectivity_plus_macos","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_macos-1.2.6/","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_foundation-2.1.3/","native_build":true,"dependencies":[]}],"linux":[{"name":"connectivity_plus_linux","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_linux-1.3.1/","native_build":false,"dependencies":[]},{"name":"path_provider_linux","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.8/","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.3/","native_build":false,"dependencies":["path_provider_linux"]}],"windows":[{"name":"connectivity_plus_windows","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_windows-1.2.2/","native_build":true,"dependencies":[]},{"name":"path_provider_windows","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/","native_build":false,"dependencies":[]},{"name":"shared_preferences_windows","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.3/","native_build":false,"dependencies":["path_provider_windows"]}],"web":[{"name":"connectivity_plus_web","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/connectivity_plus_web-1.2.5/","dependencies":[]},{"name":"shared_preferences_web","path":"/Users/theutsavg/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.4/","dependencies":[]}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2023-03-02 10:58:43.875612","version":"3.3.8"}
|
8
README.md
Normal file
@ -0,0 +1,8 @@
|
||||
 [](http://hits.dwyl.com/Uuttssaavv/flutter-clean-architecture-riverpod)
|
||||
|
||||
# Flutter Clean Architecture with Riverpod
|
||||
|
||||
A Flutter app that uses the "Dummy Json" api to login and fetch products.
|
||||
|
||||
### Content
|
||||
|
29
analysis_options.yaml
Normal file
@ -0,0 +1,29 @@
|
||||
# This file configures the analyzer, which statically analyzes Dart code to
|
||||
# check for errors, warnings, and lints.
|
||||
#
|
||||
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
|
||||
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
|
||||
# invoked from the command line by running `flutter analyze`.
|
||||
|
||||
# The following line activates a set of recommended lints for Flutter apps,
|
||||
# packages, and plugins designed to encourage good coding practices.
|
||||
include: package:flutter_lints/flutter.yaml
|
||||
|
||||
linter:
|
||||
# The lint rules applied to this project can be customized in the
|
||||
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
||||
# included above or to enable additional rules. A list of all available lints
|
||||
# and their documentation is published at
|
||||
# https://dart-lang.github.io/linter/lints/index.html.
|
||||
#
|
||||
# Instead of disabling a lint rule for the entire project in the
|
||||
# section below, it can also be suppressed for a single line of code
|
||||
# or a specific dart file by using the `// ignore: name_of_lint` and
|
||||
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
|
||||
# producing the lint.
|
||||
rules:
|
||||
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
||||
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
||||
|
||||
# Additional information about this file can be found at
|
||||
# https://dart.dev/guides/language/analysis-options
|
13
android/.gitignore
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
gradle-wrapper.jar
|
||||
/.gradle
|
||||
/captures/
|
||||
/gradlew
|
||||
/gradlew.bat
|
||||
/local.properties
|
||||
GeneratedPluginRegistrant.java
|
||||
|
||||
# Remember to never publicly share your keystore.
|
||||
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
||||
key.properties
|
||||
**/*.keystore
|
||||
**/*.jks
|
71
android/app/build.gradle
Normal file
@ -0,0 +1,71 @@
|
||||
def localProperties = new Properties()
|
||||
def localPropertiesFile = rootProject.file('local.properties')
|
||||
if (localPropertiesFile.exists()) {
|
||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
||||
localProperties.load(reader)
|
||||
}
|
||||
}
|
||||
|
||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||
if (flutterRoot == null) {
|
||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||
}
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = '1'
|
||||
}
|
||||
|
||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
||||
if (flutterVersionName == null) {
|
||||
flutterVersionName = '1.0'
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
android {
|
||||
compileSdkVersion flutter.compileSdkVersion
|
||||
ndkVersion flutter.ndkVersion
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId "com.example.flutter_project"
|
||||
// You can update the following values to match your application needs.
|
||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
||||
minSdkVersion flutter.minSdkVersion
|
||||
targetSdkVersion flutter.targetSdkVersion
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
// TODO: Add your own signing config for the release build.
|
||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
flutter {
|
||||
source '../..'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
}
|
8
android/app/src/debug/AndroidManifest.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.flutter_project">
|
||||
<!-- The INTERNET permission is required for development. Specifically,
|
||||
the Flutter tool needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
34
android/app/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,34 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.flutter_project">
|
||||
<application
|
||||
android:label="Pokemon App"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:hardwareAccelerated="true"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||
the Android process has started. This theme is visible to the user
|
||||
while the Flutter UI initializes. After that, this theme continues
|
||||
to determine the Window background behind the Flutter UI. -->
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"
|
||||
/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
</application>
|
||||
</manifest>
|
@ -0,0 +1,6 @@
|
||||
package com.example.flutter_project
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
12
android/app/src/main/res/drawable-v21/launch_background.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="?android:colorBackground" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<!-- <item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@mipmap/launch_image" />
|
||||
</item> -->
|
||||
</layer-list>
|
12
android/app/src/main/res/drawable/launch_background.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<!-- <item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@mipmap/launch_image" />
|
||||
</item> -->
|
||||
</layer-list>
|
BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 544 B |
BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 442 B |
BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 721 B |
BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
18
android/app/src/main/res/values-night/styles.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
</resources>
|
18
android/app/src/main/res/values/styles.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
</resources>
|
8
android/app/src/profile/AndroidManifest.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.flutter_project">
|
||||
<!-- The INTERNET permission is required for development. Specifically,
|
||||
the Flutter tool needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
31
android/build.gradle
Normal file
@ -0,0 +1,31 @@
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.6.10'
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.1.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.buildDir = '../build'
|
||||
subprojects {
|
||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||
}
|
||||
subprojects {
|
||||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
3
android/gradle.properties
Normal file
@ -0,0 +1,3 @@
|
||||
org.gradle.jvmargs=-Xmx1536M
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
6
android/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
#Fri Jun 23 08:50:38 CEST 2017
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
|
11
android/settings.gradle
Normal file
@ -0,0 +1,11 @@
|
||||
include ':app'
|
||||
|
||||
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
|
||||
def properties = new Properties()
|
||||
|
||||
assert localPropertiesFile.exists()
|
||||
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
|
||||
|
||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
|
384
coverage/lcov.info
Normal file
@ -0,0 +1,384 @@
|
||||
SF:lib/features/dashboard/data/datasource/dashboard_remote_datasource.dart
|
||||
DA:16,2
|
||||
DA:18,1
|
||||
DA:21,2
|
||||
DA:23,1
|
||||
DA:29,1
|
||||
DA:30,2
|
||||
DA:31,1
|
||||
DA:32,1
|
||||
DA:34,1
|
||||
DA:35,1
|
||||
DA:43,3
|
||||
DA:44,1
|
||||
DA:49,1
|
||||
DA:52,2
|
||||
DA:53,1
|
||||
DA:54,1
|
||||
DA:60,1
|
||||
DA:61,2
|
||||
DA:62,1
|
||||
DA:63,1
|
||||
DA:65,1
|
||||
DA:66,1
|
||||
DA:74,3
|
||||
DA:75,1
|
||||
LF:24
|
||||
LH:24
|
||||
end_of_record
|
||||
SF:lib/shared/domain/models/response.dart
|
||||
DA:9,5
|
||||
DA:11,1
|
||||
DA:13,4
|
||||
DA:18,2
|
||||
LF:4
|
||||
LH:4
|
||||
end_of_record
|
||||
SF:lib/shared/exceptions/http_exception.dart
|
||||
DA:10,10
|
||||
DA:15,1
|
||||
DA:17,4
|
||||
DA:22,1
|
||||
DA:25,1
|
||||
DA:28,1
|
||||
DA:31,1
|
||||
DA:32,4
|
||||
DA:38,2
|
||||
LF:9
|
||||
LH:9
|
||||
end_of_record
|
||||
SF:lib/shared/domain/models/paginated_response.dart
|
||||
DA:12,4
|
||||
DA:15,4
|
||||
DA:17,4
|
||||
DA:18,4
|
||||
DA:19,4
|
||||
DA:22,1
|
||||
DA:24,5
|
||||
LF:7
|
||||
LH:7
|
||||
end_of_record
|
||||
SF:lib/shared/domain/models/parse_response.dart
|
||||
DA:6,1
|
||||
DA:17,1
|
||||
DA:19,1
|
||||
DA:20,2
|
||||
DA:21,1
|
||||
DA:22,1
|
||||
DA:23,1
|
||||
LF:7
|
||||
LH:7
|
||||
end_of_record
|
||||
SF:lib/shared/domain/models/product/product_model.dart
|
||||
DA:24,6
|
||||
LF:1
|
||||
LH:1
|
||||
end_of_record
|
||||
SF:lib/shared/domain/models/product/product_model.g.dart
|
||||
DA:9,6
|
||||
DA:10,3
|
||||
DA:11,3
|
||||
DA:12,3
|
||||
DA:13,3
|
||||
DA:14,3
|
||||
DA:15,3
|
||||
DA:16,5
|
||||
DA:18,5
|
||||
DA:19,3
|
||||
DA:20,3
|
||||
DA:21,3
|
||||
DA:22,4
|
||||
DA:23,2
|
||||
DA:27,1
|
||||
DA:28,1
|
||||
DA:29,1
|
||||
DA:30,1
|
||||
DA:31,1
|
||||
DA:32,1
|
||||
DA:33,1
|
||||
DA:34,1
|
||||
DA:35,1
|
||||
DA:36,1
|
||||
DA:37,1
|
||||
DA:38,1
|
||||
DA:39,1
|
||||
LF:27
|
||||
LH:27
|
||||
end_of_record
|
||||
SF:lib/shared/globals.dart
|
||||
DA:3,20
|
||||
LF:1
|
||||
LH:1
|
||||
end_of_record
|
||||
SF:lib/shared/data/remote/dio_network_service.dart
|
||||
DA:13,5
|
||||
DA:15,5
|
||||
DA:16,0
|
||||
DA:18,0
|
||||
DA:19,0
|
||||
DA:24,2
|
||||
DA:25,1
|
||||
DA:26,1
|
||||
DA:28,1
|
||||
DA:31,1
|
||||
DA:32,1
|
||||
DA:37,1
|
||||
DA:39,2
|
||||
DA:40,1
|
||||
DA:41,0
|
||||
DA:46,1
|
||||
DA:49,1
|
||||
DA:50,3
|
||||
DA:59,1
|
||||
DA:62,1
|
||||
DA:63,3
|
||||
LF:21
|
||||
LH:17
|
||||
end_of_record
|
||||
SF:lib/shared/mixins/exception_handler_mixin.dart
|
||||
DA:12,2
|
||||
DA:17,2
|
||||
DA:18,2
|
||||
DA:19,2
|
||||
DA:20,2
|
||||
DA:21,2
|
||||
DA:22,2
|
||||
DA:29,6
|
||||
DA:30,2
|
||||
DA:31,2
|
||||
DA:35,2
|
||||
DA:38,2
|
||||
DA:40,2
|
||||
DA:42,4
|
||||
DA:48,2
|
||||
DA:50,2
|
||||
DA:51,2
|
||||
LF:17
|
||||
LH:17
|
||||
end_of_record
|
||||
SF:lib/shared/domain/models/user/user_model.dart
|
||||
DA:13,5
|
||||
DA:25,1
|
||||
DA:26,1
|
||||
DA:27,1
|
||||
DA:28,1
|
||||
DA:29,1
|
||||
DA:30,1
|
||||
DA:31,1
|
||||
DA:32,1
|
||||
DA:33,1
|
||||
DA:34,1
|
||||
DA:35,1
|
||||
DA:38,3
|
||||
DA:39,3
|
||||
DA:40,3
|
||||
DA:41,3
|
||||
DA:42,3
|
||||
DA:43,3
|
||||
DA:44,3
|
||||
DA:45,3
|
||||
DA:46,3
|
||||
DA:47,3
|
||||
DA:48,3
|
||||
DA:52,10
|
||||
DA:53,5
|
||||
DA:54,5
|
||||
DA:55,5
|
||||
DA:56,5
|
||||
DA:57,5
|
||||
DA:58,5
|
||||
DA:59,5
|
||||
DA:60,5
|
||||
DA:61,5
|
||||
DA:64,1
|
||||
DA:75,1
|
||||
DA:76,1
|
||||
DA:77,1
|
||||
DA:78,1
|
||||
DA:79,1
|
||||
DA:80,1
|
||||
DA:81,1
|
||||
DA:82,1
|
||||
DA:83,1
|
||||
DA:84,1
|
||||
LF:44
|
||||
LH:44
|
||||
end_of_record
|
||||
SF:lib/features/dashboard/data/repositories/dashboard_repository.dart
|
||||
DA:9,2
|
||||
DA:11,1
|
||||
DA:14,2
|
||||
DA:17,1
|
||||
DA:20,2
|
||||
LF:5
|
||||
LH:5
|
||||
end_of_record
|
||||
SF:lib/features/dashboard/domain/providers/dashboard_providers.dart
|
||||
DA:8,2
|
||||
DA:9,1
|
||||
DA:10,2
|
||||
DA:13,4
|
||||
DA:14,2
|
||||
DA:15,3
|
||||
DA:16,1
|
||||
LF:7
|
||||
LH:7
|
||||
end_of_record
|
||||
SF:lib/shared/domain/providers/dio_network_service_provider.dart
|
||||
DA:5,9
|
||||
DA:6,3
|
||||
DA:7,3
|
||||
DA:8,3
|
||||
LF:4
|
||||
LH:4
|
||||
end_of_record
|
||||
SF:lib/features/dashboard/presentation/providers/state/dashboard_notifier.dart
|
||||
DA:13,1
|
||||
DA:15,1
|
||||
DA:16,1
|
||||
DA:17,6
|
||||
DA:18,1
|
||||
DA:19,4
|
||||
DA:20,3
|
||||
DA:21,3
|
||||
DA:25,5
|
||||
DA:27,1
|
||||
DA:29,3
|
||||
DA:37,1
|
||||
DA:38,4
|
||||
DA:39,3
|
||||
DA:40,3
|
||||
DA:44,2
|
||||
DA:45,3
|
||||
DA:49,1
|
||||
DA:51,3
|
||||
DA:59,1
|
||||
DA:60,2
|
||||
DA:61,3
|
||||
DA:63,1
|
||||
DA:66,1
|
||||
DA:67,5
|
||||
DA:69,4
|
||||
DA:71,3
|
||||
DA:73,3
|
||||
DA:77,1
|
||||
DA:78,2
|
||||
DA:79,1
|
||||
DA:85,1
|
||||
DA:86,1
|
||||
LF:33
|
||||
LH:33
|
||||
end_of_record
|
||||
SF:lib/features/dashboard/presentation/providers/state/dashboard_state.dart
|
||||
DA:22,4
|
||||
DA:32,3
|
||||
DA:42,2
|
||||
DA:51,2
|
||||
DA:52,1
|
||||
DA:53,2
|
||||
DA:54,2
|
||||
DA:55,2
|
||||
DA:56,2
|
||||
DA:57,1
|
||||
DA:58,1
|
||||
DA:62,1
|
||||
DA:64,9
|
||||
DA:67,1
|
||||
DA:68,6
|
||||
LF:15
|
||||
LH:15
|
||||
end_of_record
|
||||
SF:lib/features/authentication/data/datasource/auth_remote_data_source.dart
|
||||
DA:13,2
|
||||
DA:15,1
|
||||
DA:18,2
|
||||
DA:20,1
|
||||
DA:22,1
|
||||
DA:23,1
|
||||
DA:24,1
|
||||
DA:26,1
|
||||
DA:27,2
|
||||
DA:29,2
|
||||
DA:30,2
|
||||
DA:33,1
|
||||
DA:37,1
|
||||
DA:38,1
|
||||
DA:41,2
|
||||
LF:15
|
||||
LH:15
|
||||
end_of_record
|
||||
SF:lib/features/authentication/data/repositories/atuhentication_repository_impl.dart
|
||||
DA:10,2
|
||||
DA:12,1
|
||||
DA:14,2
|
||||
LF:3
|
||||
LH:3
|
||||
end_of_record
|
||||
SF:lib/features/authentication/domain/providers/login_provider.dart
|
||||
DA:8,2
|
||||
DA:9,1
|
||||
DA:10,2
|
||||
DA:13,3
|
||||
DA:14,1
|
||||
DA:15,2
|
||||
DA:17,3
|
||||
DA:18,1
|
||||
LF:8
|
||||
LH:8
|
||||
end_of_record
|
||||
SF:lib/features/authentication/presentation/providers/state/auth_notifier.dart
|
||||
DA:12,1
|
||||
DA:15,1
|
||||
DA:17,1
|
||||
DA:18,1
|
||||
DA:19,2
|
||||
DA:20,1
|
||||
DA:23,2
|
||||
DA:24,2
|
||||
DA:25,1
|
||||
DA:26,2
|
||||
DA:30,2
|
||||
LF:11
|
||||
LH:11
|
||||
end_of_record
|
||||
SF:lib/shared/data/local/shared_prefs_storage_service.dart
|
||||
DA:12,1
|
||||
DA:14,3
|
||||
DA:17,1
|
||||
DA:18,1
|
||||
DA:20,1
|
||||
DA:22,3
|
||||
DA:23,2
|
||||
DA:26,1
|
||||
DA:28,3
|
||||
DA:29,2
|
||||
DA:32,1
|
||||
DA:34,3
|
||||
DA:35,2
|
||||
DA:38,1
|
||||
DA:40,3
|
||||
DA:41,2
|
||||
DA:44,1
|
||||
DA:46,3
|
||||
DA:47,3
|
||||
LF:19
|
||||
LH:19
|
||||
end_of_record
|
||||
SF:lib/services/user_cache_service/data/datasource/user_local_datasource.dart
|
||||
DA:19,1
|
||||
DA:23,1
|
||||
DA:26,1
|
||||
DA:28,3
|
||||
DA:30,1
|
||||
DA:31,1
|
||||
DA:38,2
|
||||
DA:40,2
|
||||
DA:43,1
|
||||
DA:45,5
|
||||
DA:48,1
|
||||
DA:50,3
|
||||
DA:53,1
|
||||
DA:55,3
|
||||
LF:14
|
||||
LH:14
|
||||
end_of_record
|
20
coverage_badge.svg
Normal file
@ -0,0 +1,20 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="94" height="20">
|
||||
<linearGradient id="b" x2="0" y2="100%">
|
||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||
<stop offset="1" stop-opacity=".1"/>
|
||||
</linearGradient>
|
||||
<clipPath id="a">
|
||||
<rect width="94" height="20" rx="3" fill="#fff"/>
|
||||
</clipPath>
|
||||
<g clip-path="url(#a)">
|
||||
<path fill="#555" d="M0 0h59v20H0z"/>
|
||||
<path fill="#4ccb0f" d="M59 0h35v20H59z"/>
|
||||
<path fill="url(#b)" d="M0 0h94v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
|
||||
<text x="305" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="490">coverage</text>
|
||||
<text x="305" y="140" transform="scale(.1)" textLength="490">coverage</text>
|
||||
<text x="755" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">98%</text>
|
||||
<text x="755" y="140" transform="scale(.1)" textLength="250">98%</text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
199
folder_structure.md
Normal file
@ -0,0 +1,199 @@
|
||||
```
|
||||
lib
|
||||
┣ configs
|
||||
┃ ┗ app_configs.dart
|
||||
┣ features
|
||||
┃ ┣ authentication
|
||||
┃ ┃ ┣ data
|
||||
┃ ┃ ┃ ┣ datasource
|
||||
┃ ┃ ┃ ┃ ┣ auth_local_data_source.dart
|
||||
┃ ┃ ┃ ┃ ┗ auth_remote_data_source.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ atuhentication_repository_impl.dart
|
||||
┃ ┃ ┣ domain
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┗ login_provider.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ auth_repository.dart
|
||||
┃ ┃ ┗ presentation
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┣ state
|
||||
┃ ┃ ┃ ┃ ┃ ┣ auth_notifier.dart
|
||||
┃ ┃ ┃ ┃ ┃ ┣ auth_state.dart
|
||||
┃ ┃ ┃ ┃ ┃ ┗ auth_state.freezed.dart
|
||||
┃ ┃ ┃ ┃ ┗ auth_providers.dart
|
||||
┃ ┃ ┃ ┣ screens
|
||||
┃ ┃ ┃ ┃ ┗ login_screen.dart
|
||||
┃ ┃ ┃ ┗ widgets
|
||||
┃ ┃ ┃ ┃ ┣ auth_field.dart
|
||||
┃ ┃ ┃ ┃ ┗ button.dart
|
||||
┃ ┣ dashboard
|
||||
┃ ┃ ┣ data
|
||||
┃ ┃ ┃ ┣ datasource
|
||||
┃ ┃ ┃ ┃ ┣ dashboard_local_datasource.dart
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_remote_datasource.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_repository.dart
|
||||
┃ ┃ ┣ domain
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_providers.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_repository.dart
|
||||
┃ ┃ ┗ presentation
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┣ state
|
||||
┃ ┃ ┃ ┃ ┃ ┣ dashboard_notifier.dart
|
||||
┃ ┃ ┃ ┃ ┃ ┗ dashboard_state.dart
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_state_provider.dart
|
||||
┃ ┃ ┃ ┣ screens
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_screen.dart
|
||||
┃ ┃ ┃ ┗ widgets
|
||||
┃ ┗ .DS_Store
|
||||
┣ main
|
||||
┃ ┣ app.dart
|
||||
┃ ┣ app_env.dart
|
||||
┃ ┣ main_dev.dart
|
||||
┃ ┣ main_staging.dart
|
||||
┃ ┗ observers.dart
|
||||
┣ routes
|
||||
┃ ┣ app_route.dart
|
||||
┃ ┗ app_route.gr.dart
|
||||
┣ services
|
||||
┃ ┣ other_service
|
||||
┃ ┗ user_cache_service
|
||||
┃ ┃ ┣ data
|
||||
┃ ┃ ┃ ┣ datasource
|
||||
┃ ┃ ┃ ┃ ┗ user_local_datasource.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ user_repository_impl.dart
|
||||
┃ ┃ ┣ domain
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┗ user_cache_provider.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ user_cache_repository.dart
|
||||
┃ ┃ ┗ presentation
|
||||
┃ ┃ ┃ ┗ .gitkeep
|
||||
┣ shared
|
||||
┃ ┣ data
|
||||
┃ ┃ ┣ local
|
||||
┃ ┃ ┃ ┣ shared_prefs_storage_service.dart
|
||||
┃ ┃ ┃ ┗ storage_service.dart
|
||||
┃ ┃ ┗ remote
|
||||
┃ ┃ ┃ ┣ dio_network_service.dart
|
||||
┃ ┃ ┃ ┣ network_service.dart
|
||||
┃ ┃ ┃ ┗ remote.dart
|
||||
┃ ┣ domain
|
||||
┃ ┃ ┣ models
|
||||
┃ ┃ ┃ ┣ product
|
||||
┃ ┃ ┃ ┃ ┣ product_model.dart
|
||||
┃ ┃ ┃ ┃ ┣ product_model.freezed.dart
|
||||
┃ ┃ ┃ ┃ ┗ product_model.g.dart
|
||||
┃ ┃ ┃ ┣ user
|
||||
┃ ┃ ┃ ┃ ┗ user_model.dart
|
||||
┃ ┃ ┃ ┣ models.dart
|
||||
┃ ┃ ┃ ┣ paginated_response.dart
|
||||
┃ ┃ ┃ ┣ parse_response.dart
|
||||
┃ ┃ ┃ ┗ response.dart
|
||||
┃ ┃ ┗ providers
|
||||
┃ ┃ ┃ ┣ dio_network_service_provider.dart
|
||||
┃ ┃ ┃ ┗ sharedpreferences_storage_service_provider.dart
|
||||
┃ ┣ exceptions
|
||||
┃ ┃ ┗ http_exception.dart
|
||||
┃ ┣ mixins
|
||||
┃ ┃ ┗ exception_handler_mixin.dart
|
||||
┃ ┣ theme
|
||||
┃ ┃ ┣ app_colors.dart
|
||||
┃ ┃ ┣ app_theme.dart
|
||||
┃ ┃ ┣ test_styles.dart
|
||||
┃ ┃ ┗ text_theme.dart
|
||||
┃ ┣ widgets
|
||||
┃ ┃ ┣ app_error.dart
|
||||
┃ ┃ ┗ app_loading.dart
|
||||
┃ ┗ globals.dart
|
||||
┣ .DS_Store
|
||||
┣ main.dart
|
||||
┗ splash_screen.dart
|
||||
```
|
||||
|
||||
Test
|
||||
```
|
||||
test
|
||||
┣ features
|
||||
┃ ┣ authentication
|
||||
┃ ┃ ┣ data
|
||||
┃ ┃ ┃ ┣ datasource
|
||||
┃ ┃ ┃ ┃ ┣ auth_local_data_source_test.dart
|
||||
┃ ┃ ┃ ┃ ┗ auth_remote_data_source_test.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ atuhentication_repository_impl_test.dart
|
||||
┃ ┃ ┣ domain
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┗ providers_test.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ .gitkeep
|
||||
┃ ┃ ┗ presentation
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┗ auth_providers_test.dart
|
||||
┃ ┃ ┃ ┗ screens
|
||||
┃ ┃ ┃ ┃ ┗ .gitkeep
|
||||
┃ ┗ dashboard
|
||||
┃ ┃ ┣ data
|
||||
┃ ┃ ┃ ┣ datasource
|
||||
┃ ┃ ┃ ┃ ┣ dashboard_local_datasource_test.dart
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_remote_datasource_test.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_repository_test.dart
|
||||
┃ ┃ ┣ domain
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_provider_test.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ .gitkeep
|
||||
┃ ┃ ┗ presentation
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┣ state
|
||||
┃ ┃ ┃ ┃ ┃ ┗ dashboard_state_test.dart
|
||||
┃ ┃ ┃ ┃ ┗ dashboard_provider_test.dart
|
||||
┃ ┃ ┃ ┗ screens
|
||||
┣ fixtures
|
||||
┃ ┣ dashboard
|
||||
┃ ┃ ┗ dummy_productlist.dart
|
||||
┃ ┣ data
|
||||
┃ ┃ ┣ product_response.dart
|
||||
┃ ┃ ┗ user_map.dart
|
||||
┃ ┣ dummy_data.dart
|
||||
┃ ┣ test_fixture.dart
|
||||
┃ ┗ user_response.json
|
||||
┣ services
|
||||
┃ ┗ user_cache_service
|
||||
┃ ┃ ┣ data
|
||||
┃ ┃ ┃ ┣ datasource
|
||||
┃ ┃ ┃ ┃ ┗ user_local_datasource_test.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ user_cache_repository_test.dart
|
||||
┃ ┃ ┣ domain
|
||||
┃ ┃ ┃ ┣ providers
|
||||
┃ ┃ ┃ ┃ ┗ user_cache_provider_test.dart
|
||||
┃ ┃ ┃ ┗ repositories
|
||||
┃ ┃ ┃ ┃ ┗ user_cache_repository_test.dart
|
||||
┃ ┃ ┗ presentation
|
||||
┃ ┃ ┃ ┗ .gitkeep
|
||||
┗ shared
|
||||
┃ ┣ data
|
||||
┃ ┃ ┣ local
|
||||
┃ ┃ ┃ ┗ sharedpreferences_storage_service_test.dart
|
||||
┃ ┃ ┗ remote
|
||||
┃ ┃ ┃ ┗ dio_network_service_test.dart
|
||||
┃ ┣ domain
|
||||
┃ ┃ ┣ models
|
||||
┃ ┃ ┃ ┣ product
|
||||
┃ ┃ ┃ ┃ ┗ product_model_test.dart
|
||||
┃ ┃ ┃ ┣ user
|
||||
┃ ┃ ┃ ┃ ┗ user_model_test.dart
|
||||
┃ ┃ ┃ ┗ response_test.dart
|
||||
┃ ┃ ┗ providers
|
||||
┃ ┃ ┃ ┗ providers_test.dart
|
||||
┃ ┣ exceptions
|
||||
┃ ┃ ┗ http_exception_test.dart
|
||||
┃ ┗ mixins
|
||||
┃ ┃ ┗ exception_handler_mixin_test.dart
|
||||
```
|
3
gencov.sh
Normal file
@ -0,0 +1,3 @@
|
||||
flutter test --coverage
|
||||
genhtml coverage/lcov.info --output=coverage/html
|
||||
open coverage/html/index.html
|
7
git.sh
Normal file
@ -0,0 +1,7 @@
|
||||
`echo "${2}"`==''
|
||||
files=`echo "${2}"`
|
||||
commitmessage=`echo "$1"`
|
||||
|
||||
echo "(${files}) ${commitmessage}"
|
||||
# git add "${files}"
|
||||
# git commit -m "${commitmessage}"
|
34
ios/.gitignore
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
**/dgph
|
||||
*.mode1v3
|
||||
*.mode2v3
|
||||
*.moved-aside
|
||||
*.pbxuser
|
||||
*.perspectivev3
|
||||
**/*sync/
|
||||
.sconsign.dblite
|
||||
.tags*
|
||||
**/.vagrant/
|
||||
**/DerivedData/
|
||||
Icon?
|
||||
**/Pods/
|
||||
**/.symlinks/
|
||||
profile
|
||||
xcuserdata
|
||||
**/.generated/
|
||||
Flutter/App.framework
|
||||
Flutter/Flutter.framework
|
||||
Flutter/Flutter.podspec
|
||||
Flutter/Generated.xcconfig
|
||||
Flutter/ephemeral/
|
||||
Flutter/app.flx
|
||||
Flutter/app.zip
|
||||
Flutter/flutter_assets/
|
||||
Flutter/flutter_export_environment.sh
|
||||
ServiceDefinitions.json
|
||||
Runner/GeneratedPluginRegistrant.*
|
||||
|
||||
# Exceptions to above rules.
|
||||
!default.mode1v3
|
||||
!default.mode2v3
|
||||
!default.pbxuser
|
||||
!default.perspectivev3
|
26
ios/Flutter/AppFrameworkInfo.plist
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>App</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>io.flutter.flutter.app</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>App</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>11.0</string>
|
||||
</dict>
|
||||
</plist>
|
2
ios/Flutter/Debug.xcconfig
Normal file
@ -0,0 +1,2 @@
|
||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
||||
#include "Generated.xcconfig"
|
2
ios/Flutter/Release.xcconfig
Normal file
@ -0,0 +1,2 @@
|
||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
||||
#include "Generated.xcconfig"
|
41
ios/Podfile
Normal file
@ -0,0 +1,41 @@
|
||||
# Uncomment this line to define a global platform for your project
|
||||
# platform :ios, '11.0'
|
||||
|
||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||
|
||||
project 'Runner', {
|
||||
'Debug' => :debug,
|
||||
'Profile' => :release,
|
||||
'Release' => :release,
|
||||
}
|
||||
|
||||
def flutter_root
|
||||
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
|
||||
unless File.exist?(generated_xcode_build_settings_path)
|
||||
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
|
||||
end
|
||||
|
||||
File.foreach(generated_xcode_build_settings_path) do |line|
|
||||
matches = line.match(/FLUTTER_ROOT\=(.*)/)
|
||||
return matches[1].strip if matches
|
||||
end
|
||||
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
|
||||
end
|
||||
|
||||
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
|
||||
|
||||
flutter_ios_podfile_setup
|
||||
|
||||
target 'Runner' do
|
||||
use_frameworks!
|
||||
use_modular_headers!
|
||||
|
||||
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
||||
end
|
||||
|
||||
post_install do |installer|
|
||||
installer.pods_project.targets.each do |target|
|
||||
flutter_additional_ios_build_settings(target)
|
||||
end
|
||||
end
|
36
ios/Podfile.lock
Normal file
@ -0,0 +1,36 @@
|
||||
PODS:
|
||||
- connectivity_plus (0.0.1):
|
||||
- Flutter
|
||||
- ReachabilitySwift
|
||||
- Flutter (1.0.0)
|
||||
- ReachabilitySwift (5.0.0)
|
||||
- shared_preferences_foundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
|
||||
DEPENDENCIES:
|
||||
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
||||
- Flutter (from `Flutter`)
|
||||
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- ReachabilitySwift
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
connectivity_plus:
|
||||
:path: ".symlinks/plugins/connectivity_plus/ios"
|
||||
Flutter:
|
||||
:path: Flutter
|
||||
shared_preferences_foundation:
|
||||
:path: ".symlinks/plugins/shared_preferences_foundation/ios"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
connectivity_plus: 413a8857dd5d9f1c399a39130850d02fe0feaf7e
|
||||
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
|
||||
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
|
||||
shared_preferences_foundation: 297b3ebca31b34ec92be11acd7fb0ba932c822ca
|
||||
|
||||
PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3
|
||||
|
||||
COCOAPODS: 1.11.3
|
552
ios/Runner.xcodeproj/project.pbxproj
Normal file
@ -0,0 +1,552 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
||||
9C46A2EB8E7B63BBE610CD07 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCCC976418917AC9046FD7E6 /* Pods_Runner.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||
3616A74B84D9630B9664DC62 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
||||
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
CF74315B6964B0489BEDAE45 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
||||
DCCC976418917AC9046FD7E6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
EE7C2BB73AD41827DDE97E81 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
97C146EB1CF9000F007C117D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9C46A2EB8E7B63BBE610CD07 /* Pods_Runner.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
7B0684A96D86C69F0FAFED03 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DCCC976418917AC9046FD7E6 /* Pods_Runner.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9740EEB11CF90186004384FC /* Flutter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */,
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
|
||||
9740EEB31CF90195004384FC /* Generated.xcconfig */,
|
||||
);
|
||||
name = Flutter;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146E51CF9000F007C117D = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9740EEB11CF90186004384FC /* Flutter */,
|
||||
97C146F01CF9000F007C117D /* Runner */,
|
||||
97C146EF1CF9000F007C117D /* Products */,
|
||||
B9375DDA9819931C746EDD17 /* Pods */,
|
||||
7B0684A96D86C69F0FAFED03 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146EF1CF9000F007C117D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
97C146EE1CF9000F007C117D /* Runner.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146F01CF9000F007C117D /* Runner */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
97C146FA1CF9000F007C117D /* Main.storyboard */,
|
||||
97C146FD1CF9000F007C117D /* Assets.xcassets */,
|
||||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
|
||||
97C147021CF9000F007C117D /* Info.plist */,
|
||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
|
||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
|
||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
|
||||
);
|
||||
path = Runner;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B9375DDA9819931C746EDD17 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EE7C2BB73AD41827DDE97E81 /* Pods-Runner.debug.xcconfig */,
|
||||
CF74315B6964B0489BEDAE45 /* Pods-Runner.release.xcconfig */,
|
||||
3616A74B84D9630B9664DC62 /* Pods-Runner.profile.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
97C146ED1CF9000F007C117D /* Runner */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||
buildPhases = (
|
||||
DFF83F85265E2AA01E3CC4DF /* [CP] Check Pods Manifest.lock */,
|
||||
9740EEB61CF901F6004384FC /* Run Script */,
|
||||
97C146EA1CF9000F007C117D /* Sources */,
|
||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||
97C146EC1CF9000F007C117D /* Resources */,
|
||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||
C81226972DE2E551D47128CF /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Runner;
|
||||
productName = Runner;
|
||||
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
97C146E61CF9000F007C117D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1300;
|
||||
ORGANIZATIONNAME = "";
|
||||
TargetAttributes = {
|
||||
97C146ED1CF9000F007C117D = {
|
||||
CreatedOnToolsVersion = 7.3.1;
|
||||
LastSwiftMigration = 1100;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 97C146E51CF9000F007C117D;
|
||||
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
97C146ED1CF9000F007C117D /* Runner */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
97C146EC1CF9000F007C117D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
|
||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
|
||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
|
||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Thin Binary";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
||||
};
|
||||
9740EEB61CF901F6004384FC /* Run Script */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Run Script";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||
};
|
||||
C81226972DE2E551D47128CF /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
DFF83F85265E2AA01E3CC4DF /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
97C146EA1CF9000F007C117D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
97C146FB1CF9000F007C117D /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
97C147001CF9000F007C117D /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
249021D3217E4FDB00AE95B9 /* Profile */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Profile;
|
||||
};
|
||||
249021D4217E4FDB00AE95B9 /* Profile */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = 66R5J68629;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterProject;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Profile;
|
||||
};
|
||||
97C147031CF9000F007C117D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
97C147041CF9000F007C117D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
97C147061CF9000F007C117D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = 66R5J68629;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterProject;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
97C147071CF9000F007C117D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = 66R5J68629;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterProject;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
97C147031CF9000F007C117D /* Debug */,
|
||||
97C147041CF9000F007C117D /* Release */,
|
||||
249021D3217E4FDB00AE95B9 /* Profile */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
97C147061CF9000F007C117D /* Debug */,
|
||||
97C147071CF9000F007C117D /* Release */,
|
||||
249021D4217E4FDB00AE95B9 /* Profile */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 97C146E61CF9000F007C117D /* Project object */;
|
||||
}
|
7
ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
87
ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
Normal file
@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1300"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Profile"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
10
ios/Runner.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
13
ios/Runner/AppDelegate.swift
Normal file
@ -0,0 +1,13 @@
|
||||
import UIKit
|
||||
import Flutter
|
||||
|
||||
@UIApplicationMain
|
||||
@objc class AppDelegate: FlutterAppDelegate {
|
||||
override func application(
|
||||
_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||||
) -> Bool {
|
||||
GeneratedPluginRegistrant.register(with: self)
|
||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||||
}
|
||||
}
|
122
ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
Normal file
@ -0,0 +1,122 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-20x20@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-20x20@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-29x29@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-29x29@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-29x29@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-40x40@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-40x40@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-60x60@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-60x60@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-20x20@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-20x20@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-29x29@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-29x29@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-40x40@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-40x40@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-76x76@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-76x76@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "83.5x83.5",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-83.5x83.5@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "1024x1024",
|
||||
"idiom" : "ios-marketing",
|
||||
"filename" : "Icon-App-1024x1024@1x.png",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 564 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.5 KiB |
23
ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "LaunchImage.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "LaunchImage@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "LaunchImage@3x.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
BIN
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
vendored
Normal file
After Width: | Height: | Size: 68 B |
BIN
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
vendored
Normal file
After Width: | Height: | Size: 68 B |
BIN
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
vendored
Normal file
After Width: | Height: | Size: 68 B |
5
ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
# Launch Screen Assets
|
||||
|
||||
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
|
||||
|
||||
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
|
37
ios/Runner/Base.lproj/LaunchScreen.storyboard
Normal file
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="LaunchImage" width="168" height="185"/>
|
||||
</resources>
|
||||
</document>
|
26
ios/Runner/Base.lproj/Main.storyboard
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Flutter View Controller-->
|
||||
<scene sceneID="tne-QT-ifu">
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
49
ios/Runner/Info.plist
Normal file
@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Flutter Project</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>flutter_project</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
1
ios/Runner/Runner-Bridging-Header.h
Normal file
@ -0,0 +1 @@
|
||||
#import "GeneratedPluginRegistrant.h"
|
3
lib/configs/app_configs.dart
Normal file
@ -0,0 +1,3 @@
|
||||
class AppConfigs {
|
||||
static String baseUrl = 'https://dummyjson.com';
|
||||
}
|
@ -0,0 +1 @@
|
||||
|
@ -0,0 +1,46 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter_project/shared/data/remote/remote.dart';
|
||||
import 'package:flutter_project/shared/domain/models/models.dart';
|
||||
import 'package:flutter_project/shared/exceptions/http_exception.dart';
|
||||
|
||||
abstract class LoginUserDataSource {
|
||||
Future<Either<AppException, User>> loginUser({required User user});
|
||||
}
|
||||
|
||||
class LoginUserRemoteDataSource implements LoginUserDataSource {
|
||||
final NetworkService networkService;
|
||||
|
||||
LoginUserRemoteDataSource(this.networkService);
|
||||
|
||||
@override
|
||||
Future<Either<AppException, User>> loginUser({required User user}) async {
|
||||
try {
|
||||
final eitherType = await networkService.post(
|
||||
'/auth/login',
|
||||
data: user.toJson(),
|
||||
);
|
||||
return eitherType.fold(
|
||||
(exception) {
|
||||
return Left(exception);
|
||||
},
|
||||
(response) {
|
||||
final user = User.fromJson(response.data);
|
||||
// update the token for requests
|
||||
networkService.updateHeader(
|
||||
{'Authorization': user.token},
|
||||
);
|
||||
|
||||
return Right(user);
|
||||
},
|
||||
);
|
||||
} catch (e) {
|
||||
return Left(
|
||||
AppException(
|
||||
message: 'Unknown error occured',
|
||||
statusCode: 1,
|
||||
identifier: '${e.toString()}\nLoginUserRemoteDataSource.loginUser',
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter_project/features/authentication/data/datasource/auth_remote_data_source.dart';
|
||||
import 'package:flutter_project/features/authentication/domain/repositories/auth_repository.dart';
|
||||
import 'package:flutter_project/shared/domain/models/user/user_model.dart';
|
||||
import 'package:flutter_project/shared/exceptions/http_exception.dart';
|
||||
|
||||
class AuthenticationRepositoryImpl extends AuthenticationRepository {
|
||||
final LoginUserDataSource dataSource;
|
||||
|
||||
AuthenticationRepositoryImpl(this.dataSource);
|
||||
|
||||
@override
|
||||
Future<Either<AppException, User>> loginUser({required User user}) {
|
||||
return dataSource.loginUser(user: user);
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
import 'package:flutter_project/features/authentication/data/datasource/auth_remote_data_source.dart';
|
||||
import 'package:flutter_project/features/authentication/data/repositories/atuhentication_repository_impl.dart';
|
||||
import 'package:flutter_project/features/authentication/domain/repositories/auth_repository.dart';
|
||||
import 'package:flutter_project/shared/data/remote/remote.dart';
|
||||
import 'package:flutter_project/shared/domain/providers/dio_network_service_provider.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
final authdataSourceProvider =
|
||||
Provider.family<LoginUserDataSource, NetworkService>(
|
||||
(_, networkService) => LoginUserRemoteDataSource(networkService),
|
||||
);
|
||||
|
||||
final authRepositoryProvider = Provider<AuthenticationRepository>(
|
||||
(ref) {
|
||||
final NetworkService networkService = ref.watch(netwokServiceProvider);
|
||||
final LoginUserDataSource dataSource =
|
||||
ref.watch(authdataSourceProvider(networkService));
|
||||
return AuthenticationRepositoryImpl(dataSource);
|
||||
},
|
||||
);
|
@ -0,0 +1,7 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter_project/shared/domain/models/models.dart';
|
||||
import 'package:flutter_project/shared/exceptions/http_exception.dart';
|
||||
|
||||
abstract class AuthenticationRepository {
|
||||
Future<Either<AppException, User>> loginUser({required User user});
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
import 'package:flutter_project/features/authentication/domain/providers/login_provider.dart';
|
||||
import 'package:flutter_project/features/authentication/domain/repositories/auth_repository.dart';
|
||||
import 'package:flutter_project/features/authentication/presentation/providers/state/auth_notifier.dart';
|
||||
import 'package:flutter_project/features/authentication/presentation/providers/state/auth_state.dart';
|
||||
import 'package:flutter_project/services/user_cache_service/domain/providers/user_cache_provider.dart';
|
||||
import 'package:flutter_project/services/user_cache_service/domain/repositories/user_cache_repository.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
final authStateNotifierProvider =
|
||||
StateNotifierProvider<AuthNotifier, AuthState>(
|
||||
(ref) {
|
||||
final AuthenticationRepository authenticationRepository =
|
||||
ref.watch(authRepositoryProvider);
|
||||
final UserRepository userRepository =
|
||||
ref.watch(userLocalRepositoryProvider);
|
||||
return AuthNotifier(
|
||||
authRepository: authenticationRepository,
|
||||
userRepository: userRepository,
|
||||
);
|
||||
},
|
||||
);
|
@ -0,0 +1,34 @@
|
||||
import 'package:flutter_project/features/authentication/domain/repositories/auth_repository.dart';
|
||||
import 'package:flutter_project/features/authentication/presentation/providers/state/auth_state.dart';
|
||||
import 'package:flutter_project/services/user_cache_service/domain/repositories/user_cache_repository.dart';
|
||||
import 'package:flutter_project/shared/domain/models/user/user_model.dart';
|
||||
import 'package:flutter_project/shared/exceptions/http_exception.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
class AuthNotifier extends StateNotifier<AuthState> {
|
||||
final AuthenticationRepository authRepository;
|
||||
final UserRepository userRepository;
|
||||
|
||||
AuthNotifier({
|
||||
required this.authRepository,
|
||||
required this.userRepository,
|
||||
}) : super(const AuthState.initial());
|
||||
|
||||
Future<void> loginUser(String username, String password) async {
|
||||
state = const AuthState.loading();
|
||||
final response = await authRepository.loginUser(
|
||||
user: User(username: username, password: password),
|
||||
);
|
||||
|
||||
state = await response.fold(
|
||||
(failure) => AuthState.failure(failure),
|
||||
(user) async {
|
||||
final hasSavedUser = await userRepository.saveUser(user: user);
|
||||
if (hasSavedUser) {
|
||||
return const AuthState.success();
|
||||
}
|
||||
return AuthState.failure(CacheFailureException());
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
import 'package:flutter_project/shared/exceptions/http_exception.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'auth_state.freezed.dart';
|
||||
|
||||
@freezed
|
||||
abstract class AuthState with _$AuthState {
|
||||
const factory AuthState.initial() = Initial;
|
||||
const factory AuthState.loading() = Loading;
|
||||
const factory AuthState.failure(AppException exception) = Failure;
|
||||
const factory AuthState.success() = Success;
|
||||
}
|
@ -0,0 +1,566 @@
|
||||
// coverage:ignore-file
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target
|
||||
|
||||
part of 'auth_state.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// FreezedGenerator
|
||||
// **************************************************************************
|
||||
|
||||
T _$identity<T>(T value) => value;
|
||||
|
||||
final _privateConstructorUsedError = UnsupportedError(
|
||||
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods');
|
||||
|
||||
/// @nodoc
|
||||
mixin _$AuthState {
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() initial,
|
||||
required TResult Function() loading,
|
||||
required TResult Function(AppException exception) failure,
|
||||
required TResult Function() success,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? initial,
|
||||
TResult? Function()? loading,
|
||||
TResult? Function(AppException exception)? failure,
|
||||
TResult? Function()? success,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? initial,
|
||||
TResult Function()? loading,
|
||||
TResult Function(AppException exception)? failure,
|
||||
TResult Function()? success,
|
||||
required TResult orElse(),
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(Initial value) initial,
|
||||
required TResult Function(Loading value) loading,
|
||||
required TResult Function(Failure value) failure,
|
||||
required TResult Function(Success value) success,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(Initial value)? initial,
|
||||
TResult? Function(Loading value)? loading,
|
||||
TResult? Function(Failure value)? failure,
|
||||
TResult? Function(Success value)? success,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(Initial value)? initial,
|
||||
TResult Function(Loading value)? loading,
|
||||
TResult Function(Failure value)? failure,
|
||||
TResult Function(Success value)? success,
|
||||
required TResult orElse(),
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class $AuthStateCopyWith<$Res> {
|
||||
factory $AuthStateCopyWith(AuthState value, $Res Function(AuthState) then) =
|
||||
_$AuthStateCopyWithImpl<$Res, AuthState>;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class _$AuthStateCopyWithImpl<$Res, $Val extends AuthState>
|
||||
implements $AuthStateCopyWith<$Res> {
|
||||
_$AuthStateCopyWithImpl(this._value, this._then);
|
||||
|
||||
// ignore: unused_field
|
||||
final $Val _value;
|
||||
// ignore: unused_field
|
||||
final $Res Function($Val) _then;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$InitialCopyWith<$Res> {
|
||||
factory _$$InitialCopyWith(_$Initial value, $Res Function(_$Initial) then) =
|
||||
__$$InitialCopyWithImpl<$Res>;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$InitialCopyWithImpl<$Res>
|
||||
extends _$AuthStateCopyWithImpl<$Res, _$Initial>
|
||||
implements _$$InitialCopyWith<$Res> {
|
||||
__$$InitialCopyWithImpl(_$Initial _value, $Res Function(_$Initial) _then)
|
||||
: super(_value, _then);
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$Initial implements Initial {
|
||||
const _$Initial();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'AuthState.initial()';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(dynamic other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType && other is _$Initial);
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() initial,
|
||||
required TResult Function() loading,
|
||||
required TResult Function(AppException exception) failure,
|
||||
required TResult Function() success,
|
||||
}) {
|
||||
return initial();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? initial,
|
||||
TResult? Function()? loading,
|
||||
TResult? Function(AppException exception)? failure,
|
||||
TResult? Function()? success,
|
||||
}) {
|
||||
return initial?.call();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? initial,
|
||||
TResult Function()? loading,
|
||||
TResult Function(AppException exception)? failure,
|
||||
TResult Function()? success,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (initial != null) {
|
||||
return initial();
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(Initial value) initial,
|
||||
required TResult Function(Loading value) loading,
|
||||
required TResult Function(Failure value) failure,
|
||||
required TResult Function(Success value) success,
|
||||
}) {
|
||||
return initial(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(Initial value)? initial,
|
||||
TResult? Function(Loading value)? loading,
|
||||
TResult? Function(Failure value)? failure,
|
||||
TResult? Function(Success value)? success,
|
||||
}) {
|
||||
return initial?.call(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(Initial value)? initial,
|
||||
TResult Function(Loading value)? loading,
|
||||
TResult Function(Failure value)? failure,
|
||||
TResult Function(Success value)? success,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (initial != null) {
|
||||
return initial(this);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Initial implements AuthState {
|
||||
const factory Initial() = _$Initial;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$LoadingCopyWith<$Res> {
|
||||
factory _$$LoadingCopyWith(_$Loading value, $Res Function(_$Loading) then) =
|
||||
__$$LoadingCopyWithImpl<$Res>;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$LoadingCopyWithImpl<$Res>
|
||||
extends _$AuthStateCopyWithImpl<$Res, _$Loading>
|
||||
implements _$$LoadingCopyWith<$Res> {
|
||||
__$$LoadingCopyWithImpl(_$Loading _value, $Res Function(_$Loading) _then)
|
||||
: super(_value, _then);
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$Loading implements Loading {
|
||||
const _$Loading();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'AuthState.loading()';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(dynamic other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType && other is _$Loading);
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() initial,
|
||||
required TResult Function() loading,
|
||||
required TResult Function(AppException exception) failure,
|
||||
required TResult Function() success,
|
||||
}) {
|
||||
return loading();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? initial,
|
||||
TResult? Function()? loading,
|
||||
TResult? Function(AppException exception)? failure,
|
||||
TResult? Function()? success,
|
||||
}) {
|
||||
return loading?.call();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? initial,
|
||||
TResult Function()? loading,
|
||||
TResult Function(AppException exception)? failure,
|
||||
TResult Function()? success,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (loading != null) {
|
||||
return loading();
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(Initial value) initial,
|
||||
required TResult Function(Loading value) loading,
|
||||
required TResult Function(Failure value) failure,
|
||||
required TResult Function(Success value) success,
|
||||
}) {
|
||||
return loading(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(Initial value)? initial,
|
||||
TResult? Function(Loading value)? loading,
|
||||
TResult? Function(Failure value)? failure,
|
||||
TResult? Function(Success value)? success,
|
||||
}) {
|
||||
return loading?.call(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(Initial value)? initial,
|
||||
TResult Function(Loading value)? loading,
|
||||
TResult Function(Failure value)? failure,
|
||||
TResult Function(Success value)? success,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (loading != null) {
|
||||
return loading(this);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Loading implements AuthState {
|
||||
const factory Loading() = _$Loading;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$FailureCopyWith<$Res> {
|
||||
factory _$$FailureCopyWith(_$Failure value, $Res Function(_$Failure) then) =
|
||||
__$$FailureCopyWithImpl<$Res>;
|
||||
@useResult
|
||||
$Res call({AppException exception});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$FailureCopyWithImpl<$Res>
|
||||
extends _$AuthStateCopyWithImpl<$Res, _$Failure>
|
||||
implements _$$FailureCopyWith<$Res> {
|
||||
__$$FailureCopyWithImpl(_$Failure _value, $Res Function(_$Failure) _then)
|
||||
: super(_value, _then);
|
||||
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? exception = null,
|
||||
}) {
|
||||
return _then(_$Failure(
|
||||
null == exception
|
||||
? _value.exception
|
||||
: exception // ignore: cast_nullable_to_non_nullable
|
||||
as AppException,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$Failure implements Failure {
|
||||
const _$Failure(this.exception);
|
||||
|
||||
@override
|
||||
final AppException exception;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'AuthState.failure(exception: $exception)';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(dynamic other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$Failure &&
|
||||
(identical(other.exception, exception) ||
|
||||
other.exception == exception));
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType, exception);
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
_$$FailureCopyWith<_$Failure> get copyWith =>
|
||||
__$$FailureCopyWithImpl<_$Failure>(this, _$identity);
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() initial,
|
||||
required TResult Function() loading,
|
||||
required TResult Function(AppException exception) failure,
|
||||
required TResult Function() success,
|
||||
}) {
|
||||
return failure(exception);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? initial,
|
||||
TResult? Function()? loading,
|
||||
TResult? Function(AppException exception)? failure,
|
||||
TResult? Function()? success,
|
||||
}) {
|
||||
return failure?.call(exception);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? initial,
|
||||
TResult Function()? loading,
|
||||
TResult Function(AppException exception)? failure,
|
||||
TResult Function()? success,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (failure != null) {
|
||||
return failure(exception);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(Initial value) initial,
|
||||
required TResult Function(Loading value) loading,
|
||||
required TResult Function(Failure value) failure,
|
||||
required TResult Function(Success value) success,
|
||||
}) {
|
||||
return failure(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(Initial value)? initial,
|
||||
TResult? Function(Loading value)? loading,
|
||||
TResult? Function(Failure value)? failure,
|
||||
TResult? Function(Success value)? success,
|
||||
}) {
|
||||
return failure?.call(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(Initial value)? initial,
|
||||
TResult Function(Loading value)? loading,
|
||||
TResult Function(Failure value)? failure,
|
||||
TResult Function(Success value)? success,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (failure != null) {
|
||||
return failure(this);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Failure implements AuthState {
|
||||
const factory Failure(final AppException exception) = _$Failure;
|
||||
|
||||
AppException get exception;
|
||||
@JsonKey(ignore: true)
|
||||
_$$FailureCopyWith<_$Failure> get copyWith =>
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$SuccessCopyWith<$Res> {
|
||||
factory _$$SuccessCopyWith(_$Success value, $Res Function(_$Success) then) =
|
||||
__$$SuccessCopyWithImpl<$Res>;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$SuccessCopyWithImpl<$Res>
|
||||
extends _$AuthStateCopyWithImpl<$Res, _$Success>
|
||||
implements _$$SuccessCopyWith<$Res> {
|
||||
__$$SuccessCopyWithImpl(_$Success _value, $Res Function(_$Success) _then)
|
||||
: super(_value, _then);
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$Success implements Success {
|
||||
const _$Success();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'AuthState.success()';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(dynamic other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType && other is _$Success);
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() initial,
|
||||
required TResult Function() loading,
|
||||
required TResult Function(AppException exception) failure,
|
||||
required TResult Function() success,
|
||||
}) {
|
||||
return success();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? initial,
|
||||
TResult? Function()? loading,
|
||||
TResult? Function(AppException exception)? failure,
|
||||
TResult? Function()? success,
|
||||
}) {
|
||||
return success?.call();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? initial,
|
||||
TResult Function()? loading,
|
||||
TResult Function(AppException exception)? failure,
|
||||
TResult Function()? success,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (success != null) {
|
||||
return success();
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(Initial value) initial,
|
||||
required TResult Function(Loading value) loading,
|
||||
required TResult Function(Failure value) failure,
|
||||
required TResult Function(Success value) success,
|
||||
}) {
|
||||
return success(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(Initial value)? initial,
|
||||
TResult? Function(Loading value)? loading,
|
||||
TResult? Function(Failure value)? failure,
|
||||
TResult? Function(Success value)? success,
|
||||
}) {
|
||||
return success?.call(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(Initial value)? initial,
|
||||
TResult Function(Loading value)? loading,
|
||||
TResult Function(Failure value)? failure,
|
||||
TResult Function(Success value)? success,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (success != null) {
|
||||
return success(this);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Success implements AuthState {
|
||||
const factory Success() = _$Success;
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_project/features/authentication/presentation/providers/auth_providers.dart';
|
||||
import 'package:flutter_project/features/authentication/presentation/providers/state/auth_state.dart';
|
||||
import 'package:flutter_project/features/authentication/presentation/widgets/auth_field.dart';
|
||||
import 'package:flutter_project/routes/app_route.gr.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
class LoginScreen extends ConsumerWidget {
|
||||
static const routeName = '/loginScreen';
|
||||
|
||||
LoginScreen({Key? key}) : super(key: key);
|
||||
|
||||
final TextEditingController usernameController =
|
||||
TextEditingController(text: 'kminchelle');
|
||||
final TextEditingController passwordController =
|
||||
TextEditingController(text: '0lelplR');
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final state = ref.watch(authStateNotifierProvider);
|
||||
ref.listen(
|
||||
authStateNotifierProvider.select((value) => value),
|
||||
((previous, next) {
|
||||
//show Snackbar on failure
|
||||
if (next is Failure) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text(next.exception.message.toString())));
|
||||
} else if (next is Success) {
|
||||
AutoRouter.of(context).pushAndPopUntil(const DashboardScreen(),
|
||||
predicate: (_) => false);
|
||||
}
|
||||
}),
|
||||
);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('TDD with Riverpod'),
|
||||
),
|
||||
body: SafeArea(
|
||||
child: Column(
|
||||
children: [
|
||||
AuthField(
|
||||
hintText: 'Username',
|
||||
controller: usernameController,
|
||||
),
|
||||
AuthField(
|
||||
hintText: 'Password',
|
||||
obscureText: true,
|
||||
controller: passwordController,
|
||||
),
|
||||
state.maybeMap(
|
||||
loading: (_) => const Center(child: CircularProgressIndicator()),
|
||||
orElse: () => loginButton(ref),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget loginButton(WidgetRef ref) {
|
||||
return ElevatedButton(
|
||||
onPressed: () {
|
||||
// validate email and password
|
||||
ref.read(authStateNotifierProvider.notifier).loginUser(
|
||||
usernameController.text,
|
||||
passwordController.text,
|
||||
);
|
||||
},
|
||||
child: const Text('Login'),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class AuthField extends StatelessWidget {
|
||||
const AuthField({
|
||||
Key? key,
|
||||
required this.hintText,
|
||||
this.obscureText = false,
|
||||
required this.controller,
|
||||
}) : super(key: key);
|
||||
final String hintText;
|
||||
final bool obscureText;
|
||||
final TextEditingController controller;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 8.0),
|
||||
child: TextField(
|
||||
key: key,
|
||||
controller: controller,
|
||||
obscureText: obscureText,
|
||||
decoration: InputDecoration(
|
||||
hintText: hintText,
|
||||
border: const OutlineInputBorder(
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(8.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
|
@ -0,0 +1 @@
|
||||
|
@ -0,0 +1,79 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter_project/shared/data/remote/remote.dart';
|
||||
import 'package:flutter_project/shared/domain/models/paginated_response.dart';
|
||||
import 'package:flutter_project/shared/exceptions/http_exception.dart';
|
||||
import 'package:flutter_project/shared/globals.dart';
|
||||
|
||||
abstract class DashboardDatasource {
|
||||
Future<Either<AppException, PaginatedResponse>> fetchPaginatedProducts(
|
||||
{required int skip});
|
||||
Future<Either<AppException, PaginatedResponse>> searchPaginatedProducts(
|
||||
{required int skip, required String query});
|
||||
}
|
||||
|
||||
class DashboardRemoteDatasource extends DashboardDatasource {
|
||||
final NetworkService networkService;
|
||||
DashboardRemoteDatasource(this.networkService);
|
||||
|
||||
@override
|
||||
Future<Either<AppException, PaginatedResponse>> fetchPaginatedProducts(
|
||||
{required int skip}) async {
|
||||
final response = await networkService.get(
|
||||
'/products',
|
||||
queryParameters: {
|
||||
'skip': skip,
|
||||
'limit': PRODUCTS_PER_PAGE,
|
||||
},
|
||||
);
|
||||
|
||||
return response.fold(
|
||||
(l) => Left(l),
|
||||
(r) {
|
||||
final jsonData = r.data;
|
||||
if (jsonData == null) {
|
||||
return Left(
|
||||
AppException(
|
||||
identifier: 'fetchPaginatedData',
|
||||
statusCode: 0,
|
||||
message: 'The data is not in the valid format.',
|
||||
),
|
||||
);
|
||||
}
|
||||
final paginatedResponse =
|
||||
PaginatedResponse.fromJson(jsonData, jsonData['products'] ?? []);
|
||||
return Right(paginatedResponse);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Either<AppException, PaginatedResponse>> searchPaginatedProducts(
|
||||
{required int skip, required String query}) async {
|
||||
final response = await networkService.get(
|
||||
'/products/search?q=$query',
|
||||
queryParameters: {
|
||||
'skip': skip,
|
||||
'limit': PRODUCTS_PER_PAGE,
|
||||
},
|
||||
);
|
||||
|
||||
return response.fold(
|
||||
(l) => Left(l),
|
||||
(r) {
|
||||
final jsonData = r.data;
|
||||
if (jsonData == null) {
|
||||
return Left(
|
||||
AppException(
|
||||
identifier: 'search PaginatedData',
|
||||
statusCode: 0,
|
||||
message: 'The data is not in the valid format.',
|
||||
),
|
||||
);
|
||||
}
|
||||
final paginatedResponse =
|
||||
PaginatedResponse.fromJson(jsonData, jsonData['products'] ?? []);
|
||||
return Right(paginatedResponse);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter_project/features/dashboard/data/datasource/dashboard_remote_datasource.dart';
|
||||
import 'package:flutter_project/features/dashboard/domain/repositories/dashboard_repository.dart';
|
||||
import 'package:flutter_project/shared/domain/models/paginated_response.dart';
|
||||
import 'package:flutter_project/shared/exceptions/http_exception.dart';
|
||||
|
||||
class DashboardRepositoryImpl extends DashboardRepository {
|
||||
final DashboardDatasource dashboardDatasource;
|
||||
DashboardRepositoryImpl(this.dashboardDatasource);
|
||||
|
||||
@override
|
||||
Future<Either<AppException, PaginatedResponse>> fetchProducts(
|
||||
{required int skip}) {
|
||||
return dashboardDatasource.fetchPaginatedProducts(skip: skip);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Either<AppException, PaginatedResponse>> searchProducts(
|
||||
{required int skip, required String query}) {
|
||||
return dashboardDatasource.searchPaginatedProducts(
|
||||
skip: skip, query: query);
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
import 'package:flutter_project/features/dashboard/data/datasource/dashboard_remote_datasource.dart';
|
||||
import 'package:flutter_project/features/dashboard/data/repositories/dashboard_repository.dart';
|
||||
import 'package:flutter_project/features/dashboard/domain/repositories/dashboard_repository.dart';
|
||||
import 'package:flutter_project/shared/data/remote/network_service.dart';
|
||||
import 'package:flutter_project/shared/domain/providers/dio_network_service_provider.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
final dashboardDatasourceProvider =
|
||||
Provider.family<DashboardDatasource, NetworkService>(
|
||||
(_, networkService) => DashboardRemoteDatasource(networkService),
|
||||
);
|
||||
|
||||
final dashboardRepositoryProvider = Provider<DashboardRepository>((ref) {
|
||||
final networkService = ref.watch(netwokServiceProvider);
|
||||
final datasource = ref.watch(dashboardDatasourceProvider(networkService));
|
||||
final respository = DashboardRepositoryImpl(datasource);
|
||||
|
||||
return respository;
|
||||
});
|
@ -0,0 +1,10 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter_project/shared/domain/models/paginated_response.dart';
|
||||
import 'package:flutter_project/shared/exceptions/http_exception.dart';
|
||||
|
||||
abstract class DashboardRepository {
|
||||
Future<Either<AppException, PaginatedResponse>> fetchProducts(
|
||||
{required int skip});
|
||||
Future<Either<AppException, PaginatedResponse>> searchProducts(
|
||||
{required int skip, required String query});
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
//
|
||||
import 'package:flutter_project/features/dashboard/domain/providers/dashboard_providers.dart';
|
||||
import 'package:flutter_project/features/dashboard/presentation/providers/state/dashboard_notifier.dart';
|
||||
import 'package:flutter_project/features/dashboard/presentation/providers/state/dashboard_state.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
final dashboardNotifierProvider =
|
||||
StateNotifierProvider<DashboardNotifier, DashboardState>((ref) {
|
||||
final repository = ref.watch(dashboardRepositoryProvider);
|
||||
return DashboardNotifier(repository)..fetchProducts();
|
||||
});
|
@ -0,0 +1,90 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter_project/features/dashboard/domain/repositories/dashboard_repository.dart';
|
||||
import 'package:flutter_project/features/dashboard/presentation/providers/state/dashboard_state.dart';
|
||||
import 'package:flutter_project/shared/domain/models/paginated_response.dart';
|
||||
import 'package:flutter_project/shared/domain/models/product/product_model.dart';
|
||||
import 'package:flutter_project/shared/exceptions/http_exception.dart';
|
||||
import 'package:flutter_project/shared/globals.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
class DashboardNotifier extends StateNotifier<DashboardState> {
|
||||
final DashboardRepository dashboardRepository;
|
||||
|
||||
DashboardNotifier(
|
||||
this.dashboardRepository,
|
||||
) : super(const DashboardState.initial());
|
||||
|
||||
bool get isFetching =>
|
||||
state.state != DashboardConcreteState.loading && state.state != DashboardConcreteState.fetchingMore;
|
||||
|
||||
Future<void> fetchProducts() async {
|
||||
if (isFetching && state.state != DashboardConcreteState.fetchedAllProducts) {
|
||||
state = state.copyWith(
|
||||
state: state.page > 0 ? DashboardConcreteState.fetchingMore : DashboardConcreteState.loading,
|
||||
isLoading: true,
|
||||
);
|
||||
|
||||
final response = await dashboardRepository.fetchProducts(skip: state.page * PRODUCTS_PER_PAGE);
|
||||
|
||||
updateStateFromResponse(response);
|
||||
} else {
|
||||
state = state.copyWith(
|
||||
state: DashboardConcreteState.fetchedAllProducts,
|
||||
message: 'No more products available',
|
||||
isLoading: false,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> searchProducts(String query) async {
|
||||
if (isFetching && state.state != DashboardConcreteState.fetchedAllProducts) {
|
||||
state = state.copyWith(
|
||||
state: state.page > 0 ? DashboardConcreteState.fetchingMore : DashboardConcreteState.loading,
|
||||
isLoading: true,
|
||||
);
|
||||
|
||||
final response = await dashboardRepository.searchProducts(
|
||||
skip: state.page * PRODUCTS_PER_PAGE,
|
||||
query: query,
|
||||
);
|
||||
|
||||
updateStateFromResponse(response);
|
||||
} else {
|
||||
state = state.copyWith(
|
||||
state: DashboardConcreteState.fetchedAllProducts,
|
||||
message: 'No more products available',
|
||||
isLoading: false,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void updateStateFromResponse(Either<AppException, PaginatedResponse<dynamic>> response) {
|
||||
response.fold((failure) {
|
||||
state = state.copyWith(
|
||||
state: DashboardConcreteState.failure,
|
||||
message: failure.message,
|
||||
isLoading: false,
|
||||
);
|
||||
}, (data) {
|
||||
final productList = data.data.map((e) => Product.fromJson(e)).toList();
|
||||
|
||||
final totalProducts = [...state.productList, ...productList];
|
||||
|
||||
state = state.copyWith(
|
||||
productList: totalProducts,
|
||||
state: totalProducts.length == data.total
|
||||
? DashboardConcreteState.fetchedAllProducts
|
||||
: DashboardConcreteState.loaded,
|
||||
hasData: true,
|
||||
message: totalProducts.isEmpty ? 'No products found' : '',
|
||||
page: totalProducts.length ~/ PRODUCTS_PER_PAGE,
|
||||
total: data.total,
|
||||
isLoading: false,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
void resetState() {
|
||||
state = const DashboardState.initial();
|
||||
}
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter_project/shared/domain/models/product/product_model.dart';
|
||||
|
||||
enum DashboardConcreteState {
|
||||
initial,
|
||||
loading,
|
||||
loaded,
|
||||
failure,
|
||||
fetchingMore,
|
||||
fetchedAllProducts
|
||||
}
|
||||
|
||||
class DashboardState extends Equatable {
|
||||
final List<Product> productList;
|
||||
final int total;
|
||||
final int page;
|
||||
final bool hasData;
|
||||
final DashboardConcreteState state;
|
||||
final String message;
|
||||
final bool isLoading;
|
||||
const DashboardState({
|
||||
this.productList = const [],
|
||||
this.isLoading = false,
|
||||
this.hasData = false,
|
||||
this.state = DashboardConcreteState.initial,
|
||||
this.message = '',
|
||||
this.page = 0,
|
||||
this.total = 0,
|
||||
});
|
||||
|
||||
const DashboardState.initial({
|
||||
this.productList = const [],
|
||||
this.total = 0,
|
||||
this.page = 0,
|
||||
this.isLoading = false,
|
||||
this.hasData = false,
|
||||
this.state = DashboardConcreteState.initial,
|
||||
this.message = '',
|
||||
});
|
||||
|
||||
DashboardState copyWith({
|
||||
List<Product>? productList,
|
||||
int? total,
|
||||
int? page,
|
||||
bool? hasData,
|
||||
DashboardConcreteState? state,
|
||||
String? message,
|
||||
bool? isLoading,
|
||||
}) {
|
||||
return DashboardState(
|
||||
isLoading: isLoading ?? this.isLoading,
|
||||
productList: productList ?? this.productList,
|
||||
total: total ?? this.total,
|
||||
page: page ?? this.page,
|
||||
hasData: hasData ?? this.hasData,
|
||||
state: state ?? this.state,
|
||||
message: message ?? this.message,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'DashboardState(isLoading:$isLoading, productLength: ${productList.length},total:$total page: $page, hasData: $hasData, state: $state, message: $message)';
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [productList, page, hasData, state, message];
|
||||
}
|
@ -0,0 +1,153 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_project/features/dashboard/presentation/providers/dashboard_state_provider.dart';
|
||||
import 'package:flutter_project/features/dashboard/presentation/providers/state/dashboard_state.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
class DashboardScreen extends ConsumerStatefulWidget {
|
||||
static const String routeName = 'DashboardScreen';
|
||||
|
||||
const DashboardScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
ConsumerState<DashboardScreen> createState() => _DashboardScreenState();
|
||||
}
|
||||
|
||||
class _DashboardScreenState extends ConsumerState<DashboardScreen> {
|
||||
final scrollController = ScrollController();
|
||||
final TextEditingController searchController = TextEditingController();
|
||||
bool isSearchActive = false;
|
||||
Timer? _debounce;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
scrollController.addListener(scrollControllerListener);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_debounce?.cancel();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
void scrollControllerListener() {
|
||||
if (scrollController.position.maxScrollExtent == scrollController.offset) {
|
||||
final notifier = ref.read(dashboardNotifierProvider.notifier);
|
||||
if (isSearchActive) {
|
||||
notifier.searchProducts(searchController.text);
|
||||
} else {
|
||||
notifier.fetchProducts();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void refreshScrollControllerListener() {
|
||||
scrollController.removeListener(scrollControllerListener);
|
||||
scrollController.addListener(scrollControllerListener);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final state = ref.watch(dashboardNotifierProvider);
|
||||
ref.listen(
|
||||
dashboardNotifierProvider.select((value) => value),
|
||||
((DashboardState? previous, DashboardState next) {
|
||||
//show Snackbar on failure
|
||||
if (next.state == DashboardConcreteState.fetchedAllProducts) {
|
||||
if (next.message.isNotEmpty) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(next.message.toString())));
|
||||
}
|
||||
}
|
||||
}),
|
||||
);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: isSearchActive
|
||||
? TextField(
|
||||
decoration: const InputDecoration(
|
||||
hintText: 'Search here',
|
||||
),
|
||||
controller: searchController,
|
||||
onChanged: _onSearchChanged,
|
||||
)
|
||||
: const Text('Dashboard'),
|
||||
actions: [
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
searchController.clear();
|
||||
setState(() {
|
||||
isSearchActive = !isSearchActive;
|
||||
});
|
||||
|
||||
ref.read(dashboardNotifierProvider.notifier).resetState();
|
||||
if (!isSearchActive) {
|
||||
ref.read(dashboardNotifierProvider.notifier).fetchProducts();
|
||||
}
|
||||
refreshScrollControllerListener();
|
||||
},
|
||||
icon: Icon(
|
||||
isSearchActive ? Icons.clear : Icons.search,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
body: state.state == DashboardConcreteState.loading
|
||||
? const Center(child: CircularProgressIndicator())
|
||||
: state.hasData
|
||||
? Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Scrollbar(
|
||||
controller: scrollController,
|
||||
child: ListView.separated(
|
||||
separatorBuilder: (_, __) => const Divider(),
|
||||
controller: scrollController,
|
||||
itemCount: state.productList.length,
|
||||
itemBuilder: (context, index) {
|
||||
final product = state.productList[index];
|
||||
return ListTile(
|
||||
leading: CircleAvatar(backgroundImage: NetworkImage(product.thumbnail)),
|
||||
title: Text(product.title),
|
||||
trailing: Text('\$${product.price}'),
|
||||
subtitle: Text(
|
||||
product.description,
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
if (state.state == DashboardConcreteState.fetchingMore)
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(bottom: 16.0),
|
||||
child: CircularProgressIndicator(),
|
||||
),
|
||||
],
|
||||
)
|
||||
: Center(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 22.0),
|
||||
child: Text(
|
||||
state.message,
|
||||
textAlign: TextAlign.center,
|
||||
style: const TextStyle(
|
||||
fontSize: 18.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_onSearchChanged(String query) {
|
||||
if (_debounce?.isActive ?? false) _debounce?.cancel();
|
||||
_debounce = Timer(const Duration(milliseconds: 500), () {
|
||||
ref.read(dashboardNotifierProvider.notifier).searchProducts(query);
|
||||
});
|
||||
}
|
||||
}
|
0
lib/features/splash/data/.gitkeep
Normal file
0
lib/features/splash/domain/.gitkeep
Normal file
@ -0,0 +1,7 @@
|
||||
import 'package:flutter_project/services/user_cache_service/domain/providers/user_cache_provider.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
final userLoginCheckProvider = FutureProvider((ref) async {
|
||||
final repo = ref.watch(userLocalRepositoryProvider);
|
||||
return await repo.hasUser();
|
||||
});
|
49
lib/features/splash/presentation/screens/splash_screen.dart
Normal file
@ -0,0 +1,49 @@
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_project/features/splash/presentation/providers/splash_provider.dart';
|
||||
import 'package:flutter_project/routes/app_route.gr.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
class SplashScreen extends ConsumerStatefulWidget {
|
||||
static const String routeName = '/splashScreen';
|
||||
const SplashScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
ConsumerState<SplashScreen> createState() => _SplashScreenState();
|
||||
}
|
||||
|
||||
class _SplashScreenState extends ConsumerState<SplashScreen> {
|
||||
final AppRouter appRouter = AppRouter();
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
Future.delayed(const Duration(seconds: 2), () async {
|
||||
final isUserLoggedIn = await ref.read(userLoginCheckProvider.future);
|
||||
final route = isUserLoggedIn
|
||||
? const DashboardScreen()
|
||||
: LoginScreen() as PageRouteInfo;
|
||||
// ignore: use_build_context_synchronously
|
||||
AutoRouter.of(context).pushAndPopUntil(
|
||||
route,
|
||||
predicate: (_) => false,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.blue.shade700,
|
||||
body: const Center(
|
||||
child: Text(
|
||||
'Splash Screen',
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 18.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
25
lib/main.dart
Normal file
@ -0,0 +1,25 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_project/main/app.dart';
|
||||
import 'package:flutter_project/main/app_env.dart';
|
||||
import 'package:flutter_project/main/observers.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
void main() => mainCommon(AppEnvironment.PROD);
|
||||
|
||||
Future<void> mainCommon(AppEnvironment environment) async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
EnvInfo.initialize(environment);
|
||||
SystemChrome.setSystemUIOverlayStyle(
|
||||
SystemUiOverlayStyle.light.copyWith(
|
||||
statusBarColor: Colors.black,
|
||||
statusBarBrightness: Brightness.light,
|
||||
),
|
||||
);
|
||||
runApp(ProviderScope(
|
||||
observers: [
|
||||
Observers(),
|
||||
],
|
||||
child: MyApp(),
|
||||
));
|
||||
}
|
28
lib/main/app.dart
Normal file
@ -0,0 +1,28 @@
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_project/routes/app_route.gr.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
final initializationProvider = FutureProvider<Unit>(
|
||||
(ref) async {
|
||||
// final authNotifier = ref.read(authNotifierProvider.notifier);
|
||||
// await authNotifier.checkIfAuthenticated();
|
||||
return unit;
|
||||
},
|
||||
);
|
||||
|
||||
class MyApp extends ConsumerWidget {
|
||||
MyApp({super.key});
|
||||
|
||||
final appRouter = AppRouter();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
return MaterialApp.router(
|
||||
title: 'Flutter TDD',
|
||||
routeInformationParser: appRouter.defaultRouteParser(),
|
||||
routerDelegate: appRouter.delegate(),
|
||||
debugShowCheckedModeBanner: false,
|
||||
);
|
||||
}
|
||||
}
|