mirror of
https://github.com/chenasraf/pokedex_flutter.git
synced 2026-05-17 17:48:04 +00:00
feat: new pokemon api
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -45,3 +45,7 @@ app.*.map.json
|
||||
|
||||
tool/data
|
||||
lib/data
|
||||
firebase_options.dart
|
||||
firebase_app_id_file.json
|
||||
google-services.json
|
||||
GoogleService-Info.plist
|
||||
|
||||
@@ -22,6 +22,10 @@ if (flutterVersionName == null) {
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
// START: FlutterFire Configuration
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
// apply plugin: 'com.google.firebase.crashlytics'
|
||||
// END: FlutterFire Configuration
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
@@ -44,13 +48,14 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId "com.example.pokedex"
|
||||
applicationId "dev.casraf.pokedex"
|
||||
// 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 21
|
||||
targetSdkVersion flutter.targetSdkVersion
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
multiDexEnabled true
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
|
||||
@@ -7,6 +7,10 @@ buildscript {
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.2.0'
|
||||
// START: FlutterFire Configuration
|
||||
classpath 'com.google.gms:google-services:4.3.10'
|
||||
// classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
|
||||
// END: FlutterFire Configuration
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
@@ -26,6 +30,6 @@ subprojects {
|
||||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
tasks.register("clean", Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
org.gradle.jvmargs=-Xmx1536M
|
||||
org.gradle.jvmargs=-Xmx2048M
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
908
ios/Podfile.lock
Normal file
908
ios/Podfile.lock
Normal file
@@ -0,0 +1,908 @@
|
||||
PODS:
|
||||
- abseil/algorithm (1.20211102.0):
|
||||
- abseil/algorithm/algorithm (= 1.20211102.0)
|
||||
- abseil/algorithm/container (= 1.20211102.0)
|
||||
- abseil/algorithm/algorithm (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/algorithm/container (1.20211102.0):
|
||||
- abseil/algorithm/algorithm
|
||||
- abseil/base/core_headers
|
||||
- abseil/meta/type_traits
|
||||
- abseil/base (1.20211102.0):
|
||||
- abseil/base/atomic_hook (= 1.20211102.0)
|
||||
- abseil/base/base (= 1.20211102.0)
|
||||
- abseil/base/base_internal (= 1.20211102.0)
|
||||
- abseil/base/config (= 1.20211102.0)
|
||||
- abseil/base/core_headers (= 1.20211102.0)
|
||||
- abseil/base/dynamic_annotations (= 1.20211102.0)
|
||||
- abseil/base/endian (= 1.20211102.0)
|
||||
- abseil/base/errno_saver (= 1.20211102.0)
|
||||
- abseil/base/fast_type_id (= 1.20211102.0)
|
||||
- abseil/base/log_severity (= 1.20211102.0)
|
||||
- abseil/base/malloc_internal (= 1.20211102.0)
|
||||
- abseil/base/pretty_function (= 1.20211102.0)
|
||||
- abseil/base/raw_logging_internal (= 1.20211102.0)
|
||||
- abseil/base/spinlock_wait (= 1.20211102.0)
|
||||
- abseil/base/strerror (= 1.20211102.0)
|
||||
- abseil/base/throw_delegate (= 1.20211102.0)
|
||||
- abseil/base/atomic_hook (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/base (1.20211102.0):
|
||||
- abseil/base/atomic_hook
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/dynamic_annotations
|
||||
- abseil/base/log_severity
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/base/spinlock_wait
|
||||
- abseil/meta/type_traits
|
||||
- abseil/base/base_internal (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/meta/type_traits
|
||||
- abseil/base/config (1.20211102.0)
|
||||
- abseil/base/core_headers (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/dynamic_annotations (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/errno_saver (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/fast_type_id (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/log_severity (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/malloc_internal (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/dynamic_annotations
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/base/pretty_function (1.20211102.0)
|
||||
- abseil/base/raw_logging_internal (1.20211102.0):
|
||||
- abseil/base/atomic_hook
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/log_severity
|
||||
- abseil/base/spinlock_wait (1.20211102.0):
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/errno_saver
|
||||
- abseil/base/strerror (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/errno_saver
|
||||
- abseil/base/throw_delegate (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/container/common (1.20211102.0):
|
||||
- abseil/meta/type_traits
|
||||
- abseil/types/optional
|
||||
- abseil/container/compressed_tuple (1.20211102.0):
|
||||
- abseil/utility/utility
|
||||
- abseil/container/container_memory (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/memory/memory
|
||||
- abseil/meta/type_traits
|
||||
- abseil/utility/utility
|
||||
- abseil/container/fixed_array (1.20211102.0):
|
||||
- abseil/algorithm/algorithm
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/dynamic_annotations
|
||||
- abseil/base/throw_delegate
|
||||
- abseil/container/compressed_tuple
|
||||
- abseil/memory/memory
|
||||
- abseil/container/flat_hash_map (1.20211102.0):
|
||||
- abseil/algorithm/container
|
||||
- abseil/container/container_memory
|
||||
- abseil/container/hash_function_defaults
|
||||
- abseil/container/raw_hash_map
|
||||
- abseil/memory/memory
|
||||
- abseil/container/hash_function_defaults (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/hash/hash
|
||||
- abseil/strings/cord
|
||||
- abseil/strings/strings
|
||||
- abseil/container/hash_policy_traits (1.20211102.0):
|
||||
- abseil/meta/type_traits
|
||||
- abseil/container/hashtable_debug_hooks (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/container/hashtablez_sampler (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/core_headers
|
||||
- abseil/container/have_sse
|
||||
- abseil/debugging/stacktrace
|
||||
- abseil/memory/memory
|
||||
- abseil/profiling/exponential_biased
|
||||
- abseil/profiling/sample_recorder
|
||||
- abseil/synchronization/synchronization
|
||||
- abseil/utility/utility
|
||||
- abseil/container/have_sse (1.20211102.0)
|
||||
- abseil/container/inlined_vector (1.20211102.0):
|
||||
- abseil/algorithm/algorithm
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/throw_delegate
|
||||
- abseil/container/inlined_vector_internal
|
||||
- abseil/memory/memory
|
||||
- abseil/container/inlined_vector_internal (1.20211102.0):
|
||||
- abseil/base/core_headers
|
||||
- abseil/container/compressed_tuple
|
||||
- abseil/memory/memory
|
||||
- abseil/meta/type_traits
|
||||
- abseil/types/span
|
||||
- abseil/container/layout (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/meta/type_traits
|
||||
- abseil/strings/strings
|
||||
- abseil/types/span
|
||||
- abseil/utility/utility
|
||||
- abseil/container/raw_hash_map (1.20211102.0):
|
||||
- abseil/base/throw_delegate
|
||||
- abseil/container/container_memory
|
||||
- abseil/container/raw_hash_set
|
||||
- abseil/container/raw_hash_set (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian
|
||||
- abseil/container/common
|
||||
- abseil/container/compressed_tuple
|
||||
- abseil/container/container_memory
|
||||
- abseil/container/hash_policy_traits
|
||||
- abseil/container/hashtable_debug_hooks
|
||||
- abseil/container/hashtablez_sampler
|
||||
- abseil/container/have_sse
|
||||
- abseil/memory/memory
|
||||
- abseil/meta/type_traits
|
||||
- abseil/numeric/bits
|
||||
- abseil/utility/utility
|
||||
- abseil/debugging/debugging_internal (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/dynamic_annotations
|
||||
- abseil/base/errno_saver
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/debugging/demangle_internal (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/debugging/stacktrace (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/debugging/debugging_internal
|
||||
- abseil/debugging/symbolize (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/dynamic_annotations
|
||||
- abseil/base/malloc_internal
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/debugging/debugging_internal
|
||||
- abseil/debugging/demangle_internal
|
||||
- abseil/strings/strings
|
||||
- abseil/functional/bind_front (1.20211102.0):
|
||||
- abseil/base/base_internal
|
||||
- abseil/container/compressed_tuple
|
||||
- abseil/meta/type_traits
|
||||
- abseil/utility/utility
|
||||
- abseil/functional/function_ref (1.20211102.0):
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/core_headers
|
||||
- abseil/meta/type_traits
|
||||
- abseil/hash/city (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian
|
||||
- abseil/hash/hash (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian
|
||||
- abseil/container/fixed_array
|
||||
- abseil/hash/city
|
||||
- abseil/hash/low_level_hash
|
||||
- abseil/meta/type_traits
|
||||
- abseil/numeric/int128
|
||||
- abseil/strings/strings
|
||||
- abseil/types/optional
|
||||
- abseil/types/variant
|
||||
- abseil/utility/utility
|
||||
- abseil/hash/low_level_hash (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/endian
|
||||
- abseil/numeric/bits
|
||||
- abseil/numeric/int128
|
||||
- abseil/memory (1.20211102.0):
|
||||
- abseil/memory/memory (= 1.20211102.0)
|
||||
- abseil/memory/memory (1.20211102.0):
|
||||
- abseil/base/core_headers
|
||||
- abseil/meta/type_traits
|
||||
- abseil/meta (1.20211102.0):
|
||||
- abseil/meta/type_traits (= 1.20211102.0)
|
||||
- abseil/meta/type_traits (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/numeric/bits (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/numeric/int128 (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/numeric/bits
|
||||
- abseil/numeric/representation (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/profiling/exponential_biased (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/profiling/sample_recorder (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/synchronization/synchronization
|
||||
- abseil/time/time
|
||||
- abseil/random/distributions (1.20211102.0):
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/meta/type_traits
|
||||
- abseil/numeric/bits
|
||||
- abseil/random/internal/distribution_caller
|
||||
- abseil/random/internal/fast_uniform_bits
|
||||
- abseil/random/internal/fastmath
|
||||
- abseil/random/internal/generate_real
|
||||
- abseil/random/internal/iostream_state_saver
|
||||
- abseil/random/internal/traits
|
||||
- abseil/random/internal/uniform_helper
|
||||
- abseil/random/internal/wide_multiply
|
||||
- abseil/strings/strings
|
||||
- abseil/random/internal/distribution_caller (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/fast_type_id
|
||||
- abseil/utility/utility
|
||||
- abseil/random/internal/fast_uniform_bits (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/meta/type_traits
|
||||
- abseil/random/internal/fastmath (1.20211102.0):
|
||||
- abseil/numeric/bits
|
||||
- abseil/random/internal/generate_real (1.20211102.0):
|
||||
- abseil/meta/type_traits
|
||||
- abseil/numeric/bits
|
||||
- abseil/random/internal/fastmath
|
||||
- abseil/random/internal/traits
|
||||
- abseil/random/internal/iostream_state_saver (1.20211102.0):
|
||||
- abseil/meta/type_traits
|
||||
- abseil/numeric/int128
|
||||
- abseil/random/internal/nonsecure_base (1.20211102.0):
|
||||
- abseil/base/core_headers
|
||||
- abseil/meta/type_traits
|
||||
- abseil/random/internal/pool_urbg
|
||||
- abseil/random/internal/salted_seed_seq
|
||||
- abseil/random/internal/seed_material
|
||||
- abseil/types/optional
|
||||
- abseil/types/span
|
||||
- abseil/random/internal/pcg_engine (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/meta/type_traits
|
||||
- abseil/numeric/bits
|
||||
- abseil/numeric/int128
|
||||
- abseil/random/internal/fastmath
|
||||
- abseil/random/internal/iostream_state_saver
|
||||
- abseil/random/internal/platform (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/random/internal/pool_urbg (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/random/internal/randen
|
||||
- abseil/random/internal/seed_material
|
||||
- abseil/random/internal/traits
|
||||
- abseil/random/seed_gen_exception
|
||||
- abseil/types/span
|
||||
- abseil/random/internal/randen (1.20211102.0):
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/random/internal/platform
|
||||
- abseil/random/internal/randen_hwaes
|
||||
- abseil/random/internal/randen_slow
|
||||
- abseil/random/internal/randen_engine (1.20211102.0):
|
||||
- abseil/base/endian
|
||||
- abseil/meta/type_traits
|
||||
- abseil/random/internal/iostream_state_saver
|
||||
- abseil/random/internal/randen
|
||||
- abseil/random/internal/randen_hwaes (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/random/internal/platform
|
||||
- abseil/random/internal/randen_hwaes_impl
|
||||
- abseil/random/internal/randen_hwaes_impl (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/numeric/int128
|
||||
- abseil/random/internal/platform
|
||||
- abseil/random/internal/randen_slow (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian
|
||||
- abseil/numeric/int128
|
||||
- abseil/random/internal/platform
|
||||
- abseil/random/internal/salted_seed_seq (1.20211102.0):
|
||||
- abseil/container/inlined_vector
|
||||
- abseil/meta/type_traits
|
||||
- abseil/random/internal/seed_material
|
||||
- abseil/types/optional
|
||||
- abseil/types/span
|
||||
- abseil/random/internal/seed_material (1.20211102.0):
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/dynamic_annotations
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/random/internal/fast_uniform_bits
|
||||
- abseil/strings/strings
|
||||
- abseil/types/optional
|
||||
- abseil/types/span
|
||||
- abseil/random/internal/traits (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/random/internal/uniform_helper (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/meta/type_traits
|
||||
- abseil/random/internal/traits
|
||||
- abseil/random/internal/wide_multiply (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/numeric/bits
|
||||
- abseil/numeric/int128
|
||||
- abseil/random/internal/traits
|
||||
- abseil/random/random (1.20211102.0):
|
||||
- abseil/random/distributions
|
||||
- abseil/random/internal/nonsecure_base
|
||||
- abseil/random/internal/pcg_engine
|
||||
- abseil/random/internal/pool_urbg
|
||||
- abseil/random/internal/randen_engine
|
||||
- abseil/random/seed_sequences
|
||||
- abseil/random/seed_gen_exception (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/random/seed_sequences (1.20211102.0):
|
||||
- abseil/container/inlined_vector
|
||||
- abseil/random/internal/nonsecure_base
|
||||
- abseil/random/internal/pool_urbg
|
||||
- abseil/random/internal/salted_seed_seq
|
||||
- abseil/random/internal/seed_material
|
||||
- abseil/random/seed_gen_exception
|
||||
- abseil/types/span
|
||||
- abseil/status/status (1.20211102.0):
|
||||
- abseil/base/atomic_hook
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/container/inlined_vector
|
||||
- abseil/debugging/stacktrace
|
||||
- abseil/debugging/symbolize
|
||||
- abseil/functional/function_ref
|
||||
- abseil/strings/cord
|
||||
- abseil/strings/str_format
|
||||
- abseil/strings/strings
|
||||
- abseil/types/optional
|
||||
- abseil/status/statusor (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/meta/type_traits
|
||||
- abseil/status/status
|
||||
- abseil/strings/strings
|
||||
- abseil/types/variant
|
||||
- abseil/utility/utility
|
||||
- abseil/strings/cord (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/container/fixed_array
|
||||
- abseil/container/inlined_vector
|
||||
- abseil/functional/function_ref
|
||||
- abseil/meta/type_traits
|
||||
- abseil/strings/cord_internal
|
||||
- abseil/strings/cordz_functions
|
||||
- abseil/strings/cordz_info
|
||||
- abseil/strings/cordz_statistics
|
||||
- abseil/strings/cordz_update_scope
|
||||
- abseil/strings/cordz_update_tracker
|
||||
- abseil/strings/internal
|
||||
- abseil/strings/str_format
|
||||
- abseil/strings/strings
|
||||
- abseil/types/optional
|
||||
- abseil/strings/cord_internal (1.20211102.0):
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/base/throw_delegate
|
||||
- abseil/container/compressed_tuple
|
||||
- abseil/container/inlined_vector
|
||||
- abseil/container/layout
|
||||
- abseil/functional/function_ref
|
||||
- abseil/meta/type_traits
|
||||
- abseil/strings/strings
|
||||
- abseil/types/span
|
||||
- abseil/strings/cordz_functions (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/profiling/exponential_biased
|
||||
- abseil/strings/cordz_handle (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/config
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/synchronization/synchronization
|
||||
- abseil/strings/cordz_info (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/container/inlined_vector
|
||||
- abseil/debugging/stacktrace
|
||||
- abseil/strings/cord_internal
|
||||
- abseil/strings/cordz_functions
|
||||
- abseil/strings/cordz_handle
|
||||
- abseil/strings/cordz_statistics
|
||||
- abseil/strings/cordz_update_tracker
|
||||
- abseil/synchronization/synchronization
|
||||
- abseil/types/span
|
||||
- abseil/strings/cordz_statistics (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/strings/cordz_update_tracker
|
||||
- abseil/strings/cordz_update_scope (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/strings/cord_internal
|
||||
- abseil/strings/cordz_info
|
||||
- abseil/strings/cordz_update_tracker
|
||||
- abseil/strings/cordz_update_tracker (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/strings/internal (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/meta/type_traits
|
||||
- abseil/strings/str_format (1.20211102.0):
|
||||
- abseil/strings/str_format_internal
|
||||
- abseil/strings/str_format_internal (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/functional/function_ref
|
||||
- abseil/meta/type_traits
|
||||
- abseil/numeric/bits
|
||||
- abseil/numeric/int128
|
||||
- abseil/numeric/representation
|
||||
- abseil/strings/strings
|
||||
- abseil/types/optional
|
||||
- abseil/types/span
|
||||
- abseil/strings/strings (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/endian
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/base/throw_delegate
|
||||
- abseil/memory/memory
|
||||
- abseil/meta/type_traits
|
||||
- abseil/numeric/bits
|
||||
- abseil/numeric/int128
|
||||
- abseil/strings/internal
|
||||
- abseil/synchronization/graphcycles_internal (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/malloc_internal
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/synchronization/kernel_timeout_internal (1.20211102.0):
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/time/time
|
||||
- abseil/synchronization/synchronization (1.20211102.0):
|
||||
- abseil/base/atomic_hook
|
||||
- abseil/base/base
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/dynamic_annotations
|
||||
- abseil/base/malloc_internal
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/debugging/stacktrace
|
||||
- abseil/debugging/symbolize
|
||||
- abseil/synchronization/graphcycles_internal
|
||||
- abseil/synchronization/kernel_timeout_internal
|
||||
- abseil/time/time
|
||||
- abseil/time (1.20211102.0):
|
||||
- abseil/time/internal (= 1.20211102.0)
|
||||
- abseil/time/time (= 1.20211102.0)
|
||||
- abseil/time/internal (1.20211102.0):
|
||||
- abseil/time/internal/cctz (= 1.20211102.0)
|
||||
- abseil/time/internal/cctz (1.20211102.0):
|
||||
- abseil/time/internal/cctz/civil_time (= 1.20211102.0)
|
||||
- abseil/time/internal/cctz/time_zone (= 1.20211102.0)
|
||||
- abseil/time/internal/cctz/civil_time (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/time/internal/cctz/time_zone (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/time/internal/cctz/civil_time
|
||||
- abseil/time/time (1.20211102.0):
|
||||
- abseil/base/base
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/numeric/int128
|
||||
- abseil/strings/strings
|
||||
- abseil/time/internal/cctz/civil_time
|
||||
- abseil/time/internal/cctz/time_zone
|
||||
- abseil/types (1.20211102.0):
|
||||
- abseil/types/any (= 1.20211102.0)
|
||||
- abseil/types/bad_any_cast (= 1.20211102.0)
|
||||
- abseil/types/bad_any_cast_impl (= 1.20211102.0)
|
||||
- abseil/types/bad_optional_access (= 1.20211102.0)
|
||||
- abseil/types/bad_variant_access (= 1.20211102.0)
|
||||
- abseil/types/compare (= 1.20211102.0)
|
||||
- abseil/types/optional (= 1.20211102.0)
|
||||
- abseil/types/span (= 1.20211102.0)
|
||||
- abseil/types/variant (= 1.20211102.0)
|
||||
- abseil/types/any (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/fast_type_id
|
||||
- abseil/meta/type_traits
|
||||
- abseil/types/bad_any_cast
|
||||
- abseil/utility/utility
|
||||
- abseil/types/bad_any_cast (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/types/bad_any_cast_impl
|
||||
- abseil/types/bad_any_cast_impl (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/types/bad_optional_access (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/types/bad_variant_access (1.20211102.0):
|
||||
- abseil/base/config
|
||||
- abseil/base/raw_logging_internal
|
||||
- abseil/types/compare (1.20211102.0):
|
||||
- abseil/base/core_headers
|
||||
- abseil/meta/type_traits
|
||||
- abseil/types/optional (1.20211102.0):
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/memory/memory
|
||||
- abseil/meta/type_traits
|
||||
- abseil/types/bad_optional_access
|
||||
- abseil/utility/utility
|
||||
- abseil/types/span (1.20211102.0):
|
||||
- abseil/algorithm/algorithm
|
||||
- abseil/base/core_headers
|
||||
- abseil/base/throw_delegate
|
||||
- abseil/meta/type_traits
|
||||
- abseil/types/variant (1.20211102.0):
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/config
|
||||
- abseil/base/core_headers
|
||||
- abseil/meta/type_traits
|
||||
- abseil/types/bad_variant_access
|
||||
- abseil/utility/utility
|
||||
- abseil/utility/utility (1.20211102.0):
|
||||
- abseil/base/base_internal
|
||||
- abseil/base/config
|
||||
- abseil/meta/type_traits
|
||||
- AppAuth (1.6.2):
|
||||
- AppAuth/Core (= 1.6.2)
|
||||
- AppAuth/ExternalUserAgent (= 1.6.2)
|
||||
- AppAuth/Core (1.6.2)
|
||||
- AppAuth/ExternalUserAgent (1.6.2):
|
||||
- AppAuth/Core
|
||||
- BoringSSL-GRPC (0.0.24):
|
||||
- BoringSSL-GRPC/Implementation (= 0.0.24)
|
||||
- BoringSSL-GRPC/Interface (= 0.0.24)
|
||||
- BoringSSL-GRPC/Implementation (0.0.24):
|
||||
- BoringSSL-GRPC/Interface (= 0.0.24)
|
||||
- BoringSSL-GRPC/Interface (0.0.24)
|
||||
- cloud_firestore (4.2.0):
|
||||
- Firebase/Firestore (= 10.3.0)
|
||||
- firebase_core
|
||||
- Flutter
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- Firebase/Auth (10.3.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseAuth (~> 10.3.0)
|
||||
- Firebase/CoreOnly (10.3.0):
|
||||
- FirebaseCore (= 10.3.0)
|
||||
- Firebase/Crashlytics (10.3.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseCrashlytics (~> 10.3.0)
|
||||
- Firebase/Firestore (10.3.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseFirestore (~> 10.3.0)
|
||||
- Firebase/RemoteConfig (10.3.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseRemoteConfig (~> 10.3.0)
|
||||
- firebase_auth (4.2.0):
|
||||
- Firebase/Auth (= 10.3.0)
|
||||
- firebase_core
|
||||
- Flutter
|
||||
- firebase_core (2.4.0):
|
||||
- Firebase/CoreOnly (= 10.3.0)
|
||||
- Flutter
|
||||
- firebase_crashlytics (3.0.7):
|
||||
- Firebase/Crashlytics (= 10.3.0)
|
||||
- firebase_core
|
||||
- Flutter
|
||||
- firebase_remote_config (3.0.7):
|
||||
- Firebase/RemoteConfig (= 10.3.0)
|
||||
- firebase_core
|
||||
- Flutter
|
||||
- FirebaseABTesting (10.11.0):
|
||||
- FirebaseCore (~> 10.0)
|
||||
- FirebaseAuth (10.3.0):
|
||||
- FirebaseCore (~> 10.0)
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- GTMSessionFetcher/Core (< 4.0, >= 2.1)
|
||||
- FirebaseCore (10.3.0):
|
||||
- FirebaseCoreInternal (~> 10.0)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- GoogleUtilities/Logger (~> 7.8)
|
||||
- FirebaseCoreInternal (10.11.0):
|
||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
||||
- FirebaseCrashlytics (10.3.0):
|
||||
- FirebaseCore (~> 10.0)
|
||||
- FirebaseInstallations (~> 10.0)
|
||||
- GoogleDataTransport (~> 9.2)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- PromisesObjC (~> 2.1)
|
||||
- FirebaseFirestore (10.3.0):
|
||||
- abseil/algorithm (~> 1.20211102.0)
|
||||
- abseil/base (~> 1.20211102.0)
|
||||
- abseil/container/flat_hash_map (~> 1.20211102.0)
|
||||
- abseil/memory (~> 1.20211102.0)
|
||||
- abseil/meta (~> 1.20211102.0)
|
||||
- abseil/strings/strings (~> 1.20211102.0)
|
||||
- abseil/time (~> 1.20211102.0)
|
||||
- abseil/types (~> 1.20211102.0)
|
||||
- FirebaseCore (~> 10.0)
|
||||
- "gRPC-C++ (~> 1.44.0)"
|
||||
- leveldb-library (~> 1.22)
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- FirebaseInstallations (10.11.0):
|
||||
- FirebaseCore (~> 10.0)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- GoogleUtilities/UserDefaults (~> 7.8)
|
||||
- PromisesObjC (~> 2.1)
|
||||
- FirebaseRemoteConfig (10.3.0):
|
||||
- FirebaseABTesting (~> 10.0)
|
||||
- FirebaseCore (~> 10.0)
|
||||
- FirebaseInstallations (~> 10.0)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
||||
- Flutter (1.0.0)
|
||||
- FMDB (2.7.5):
|
||||
- FMDB/standard (= 2.7.5)
|
||||
- FMDB/standard (2.7.5)
|
||||
- google_sign_in_ios (0.0.1):
|
||||
- Flutter
|
||||
- GoogleSignIn (~> 6.2)
|
||||
- GoogleDataTransport (9.2.3):
|
||||
- GoogleUtilities/Environment (~> 7.7)
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- PromisesObjC (< 3.0, >= 1.2)
|
||||
- GoogleSignIn (6.2.4):
|
||||
- AppAuth (~> 1.5)
|
||||
- GTMAppAuth (~> 1.3)
|
||||
- GTMSessionFetcher/Core (< 3.0, >= 1.1)
|
||||
- GoogleUtilities/AppDelegateSwizzler (7.11.1):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/Network
|
||||
- GoogleUtilities/Environment (7.11.1):
|
||||
- PromisesObjC (< 3.0, >= 1.2)
|
||||
- GoogleUtilities/Logger (7.11.1):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/Network (7.11.1):
|
||||
- GoogleUtilities/Logger
|
||||
- "GoogleUtilities/NSData+zlib"
|
||||
- GoogleUtilities/Reachability
|
||||
- "GoogleUtilities/NSData+zlib (7.11.1)"
|
||||
- GoogleUtilities/Reachability (7.11.1):
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/UserDefaults (7.11.1):
|
||||
- GoogleUtilities/Logger
|
||||
- "gRPC-C++ (1.44.0)":
|
||||
- "gRPC-C++/Implementation (= 1.44.0)"
|
||||
- "gRPC-C++/Interface (= 1.44.0)"
|
||||
- "gRPC-C++/Implementation (1.44.0)":
|
||||
- abseil/base/base (= 1.20211102.0)
|
||||
- abseil/base/core_headers (= 1.20211102.0)
|
||||
- abseil/container/flat_hash_map (= 1.20211102.0)
|
||||
- abseil/container/inlined_vector (= 1.20211102.0)
|
||||
- abseil/functional/bind_front (= 1.20211102.0)
|
||||
- abseil/hash/hash (= 1.20211102.0)
|
||||
- abseil/memory/memory (= 1.20211102.0)
|
||||
- abseil/random/random (= 1.20211102.0)
|
||||
- abseil/status/status (= 1.20211102.0)
|
||||
- abseil/status/statusor (= 1.20211102.0)
|
||||
- abseil/strings/cord (= 1.20211102.0)
|
||||
- abseil/strings/str_format (= 1.20211102.0)
|
||||
- abseil/strings/strings (= 1.20211102.0)
|
||||
- abseil/synchronization/synchronization (= 1.20211102.0)
|
||||
- abseil/time/time (= 1.20211102.0)
|
||||
- abseil/types/optional (= 1.20211102.0)
|
||||
- abseil/types/variant (= 1.20211102.0)
|
||||
- abseil/utility/utility (= 1.20211102.0)
|
||||
- "gRPC-C++/Interface (= 1.44.0)"
|
||||
- gRPC-Core (= 1.44.0)
|
||||
- "gRPC-C++/Interface (1.44.0)"
|
||||
- gRPC-Core (1.44.0):
|
||||
- gRPC-Core/Implementation (= 1.44.0)
|
||||
- gRPC-Core/Interface (= 1.44.0)
|
||||
- gRPC-Core/Implementation (1.44.0):
|
||||
- abseil/base/base (= 1.20211102.0)
|
||||
- abseil/base/core_headers (= 1.20211102.0)
|
||||
- abseil/container/flat_hash_map (= 1.20211102.0)
|
||||
- abseil/container/inlined_vector (= 1.20211102.0)
|
||||
- abseil/functional/bind_front (= 1.20211102.0)
|
||||
- abseil/hash/hash (= 1.20211102.0)
|
||||
- abseil/memory/memory (= 1.20211102.0)
|
||||
- abseil/random/random (= 1.20211102.0)
|
||||
- abseil/status/status (= 1.20211102.0)
|
||||
- abseil/status/statusor (= 1.20211102.0)
|
||||
- abseil/strings/cord (= 1.20211102.0)
|
||||
- abseil/strings/str_format (= 1.20211102.0)
|
||||
- abseil/strings/strings (= 1.20211102.0)
|
||||
- abseil/synchronization/synchronization (= 1.20211102.0)
|
||||
- abseil/time/time (= 1.20211102.0)
|
||||
- abseil/types/optional (= 1.20211102.0)
|
||||
- abseil/types/variant (= 1.20211102.0)
|
||||
- abseil/utility/utility (= 1.20211102.0)
|
||||
- BoringSSL-GRPC (= 0.0.24)
|
||||
- gRPC-Core/Interface (= 1.44.0)
|
||||
- Libuv-gRPC (= 0.0.10)
|
||||
- gRPC-Core/Interface (1.44.0)
|
||||
- GTMAppAuth (1.3.1):
|
||||
- AppAuth/Core (~> 1.6)
|
||||
- GTMSessionFetcher/Core (< 3.0, >= 1.5)
|
||||
- GTMSessionFetcher/Core (2.3.0)
|
||||
- leveldb-library (1.22.2)
|
||||
- Libuv-gRPC (0.0.10):
|
||||
- Libuv-gRPC/Implementation (= 0.0.10)
|
||||
- Libuv-gRPC/Interface (= 0.0.10)
|
||||
- Libuv-gRPC/Implementation (0.0.10):
|
||||
- Libuv-gRPC/Interface (= 0.0.10)
|
||||
- Libuv-gRPC/Interface (0.0.10)
|
||||
- nanopb (2.30909.0):
|
||||
- nanopb/decode (= 2.30909.0)
|
||||
- nanopb/encode (= 2.30909.0)
|
||||
- nanopb/decode (2.30909.0)
|
||||
- nanopb/encode (2.30909.0)
|
||||
- path_provider_ios (0.0.1):
|
||||
- Flutter
|
||||
- PromisesObjC (2.2.0)
|
||||
- shared_preferences_ios (0.0.1):
|
||||
- Flutter
|
||||
- sign_in_with_apple (0.0.1):
|
||||
- Flutter
|
||||
- sqflite (0.0.2):
|
||||
- Flutter
|
||||
- FMDB (>= 2.7.5)
|
||||
- wakelock (0.0.1):
|
||||
- Flutter
|
||||
|
||||
DEPENDENCIES:
|
||||
- cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
|
||||
- firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
|
||||
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
||||
- firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`)
|
||||
- firebase_remote_config (from `.symlinks/plugins/firebase_remote_config/ios`)
|
||||
- Flutter (from `Flutter`)
|
||||
- google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/ios`)
|
||||
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
|
||||
- shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
|
||||
- sign_in_with_apple (from `.symlinks/plugins/sign_in_with_apple/ios`)
|
||||
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
||||
- wakelock (from `.symlinks/plugins/wakelock/ios`)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- abseil
|
||||
- AppAuth
|
||||
- BoringSSL-GRPC
|
||||
- Firebase
|
||||
- FirebaseABTesting
|
||||
- FirebaseAuth
|
||||
- FirebaseCore
|
||||
- FirebaseCoreInternal
|
||||
- FirebaseCrashlytics
|
||||
- FirebaseFirestore
|
||||
- FirebaseInstallations
|
||||
- FirebaseRemoteConfig
|
||||
- FMDB
|
||||
- GoogleDataTransport
|
||||
- GoogleSignIn
|
||||
- GoogleUtilities
|
||||
- "gRPC-C++"
|
||||
- gRPC-Core
|
||||
- GTMAppAuth
|
||||
- GTMSessionFetcher
|
||||
- leveldb-library
|
||||
- Libuv-gRPC
|
||||
- nanopb
|
||||
- PromisesObjC
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
cloud_firestore:
|
||||
:path: ".symlinks/plugins/cloud_firestore/ios"
|
||||
firebase_auth:
|
||||
:path: ".symlinks/plugins/firebase_auth/ios"
|
||||
firebase_core:
|
||||
:path: ".symlinks/plugins/firebase_core/ios"
|
||||
firebase_crashlytics:
|
||||
:path: ".symlinks/plugins/firebase_crashlytics/ios"
|
||||
firebase_remote_config:
|
||||
:path: ".symlinks/plugins/firebase_remote_config/ios"
|
||||
Flutter:
|
||||
:path: Flutter
|
||||
google_sign_in_ios:
|
||||
:path: ".symlinks/plugins/google_sign_in_ios/ios"
|
||||
path_provider_ios:
|
||||
:path: ".symlinks/plugins/path_provider_ios/ios"
|
||||
shared_preferences_ios:
|
||||
:path: ".symlinks/plugins/shared_preferences_ios/ios"
|
||||
sign_in_with_apple:
|
||||
:path: ".symlinks/plugins/sign_in_with_apple/ios"
|
||||
sqflite:
|
||||
:path: ".symlinks/plugins/sqflite/ios"
|
||||
wakelock:
|
||||
:path: ".symlinks/plugins/wakelock/ios"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
abseil: ebe5b5529fb05d93a8bdb7951607be08b7fa71bc
|
||||
AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570
|
||||
BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33
|
||||
cloud_firestore: cf019e947a49ebb56ddf4ae7f6f2ca13469da1b1
|
||||
Firebase: f92fc551ead69c94168d36c2b26188263860acd9
|
||||
firebase_auth: 579a0dc15451491cc83fccaa5102296635f24938
|
||||
firebase_core: 6f2f753e316765799d88568232ed59e300ff53db
|
||||
firebase_crashlytics: 4aecad95b85802572a72804e4ca57385357e5255
|
||||
firebase_remote_config: 7fba03b2c711b07b78c12a832730827a6bee7a74
|
||||
FirebaseABTesting: 3f6b711718feb87346dc05f8c964601bc8fb2cf6
|
||||
FirebaseAuth: 0e415d29d846c1dce2fb641e46f35e9888d9bec6
|
||||
FirebaseCore: 988754646ab3bd4bdcb740f1bfe26b9f6c0d5f2a
|
||||
FirebaseCoreInternal: 9e46c82a14a3b3a25be4e1e151ce6d21536b89c0
|
||||
FirebaseCrashlytics: f20d956f8229010b645e534693c39e0b7843c268
|
||||
FirebaseFirestore: 244f71ff14ef44f39e00b44d356eac708ce03103
|
||||
FirebaseInstallations: 2a2c6859354cbec0a228a863d4daf6de7c74ced4
|
||||
FirebaseRemoteConfig: c24f767c17b0440ee63c7e93380d599173556113
|
||||
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
|
||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||
google_sign_in_ios: 4f85eb9f937450765c8573bb85fd8cd6a5af675c
|
||||
GoogleDataTransport: f0308f5905a745f94fb91fea9c6cbaf3831cb1bd
|
||||
GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a
|
||||
GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749
|
||||
"gRPC-C++": 9675f953ace2b3de7c506039d77be1f2e77a8db2
|
||||
gRPC-Core: 943e491cb0d45598b0b0eb9e910c88080369290b
|
||||
GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd
|
||||
GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2
|
||||
leveldb-library: f03246171cce0484482ec291f88b6d563699ee06
|
||||
Libuv-gRPC: 55e51798e14ef436ad9bc45d12d43b77b49df378
|
||||
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
|
||||
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
|
||||
PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef
|
||||
shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad
|
||||
sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440
|
||||
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
|
||||
wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f
|
||||
|
||||
PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
@@ -13,6 +13,8 @@
|
||||
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 */; };
|
||||
9A1A74E2C39B643942CDB63F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B614AFF32CE791A460397DB9 /* Pods_Runner.framework */; };
|
||||
C2CC0F1923E610831217F9E6 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 00CF6856B2390472A7F3A6A9 /* GoogleService-Info.plist */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
@@ -29,9 +31,11 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
00CF6856B2390472A7F3A6A9 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
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>"; };
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||
58CEA867CEE857662A23AA44 /* 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>"; };
|
||||
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>"; };
|
||||
@@ -42,6 +46,9 @@
|
||||
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>"; };
|
||||
B614AFF32CE791A460397DB9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B77515FB5AB0901F271935E1 /* 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>"; };
|
||||
D4FB3FC7D19154CCF9372164 /* 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>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -49,12 +56,21 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9A1A74E2C39B643942CDB63F /* Pods_Runner.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
2BC63D6D5787BDE1BE1CA2E6 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B614AFF32CE791A460397DB9 /* Pods_Runner.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9740EEB11CF90186004384FC /* Flutter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -72,6 +88,9 @@
|
||||
9740EEB11CF90186004384FC /* Flutter */,
|
||||
97C146F01CF9000F007C117D /* Runner */,
|
||||
97C146EF1CF9000F007C117D /* Products */,
|
||||
00CF6856B2390472A7F3A6A9 /* GoogleService-Info.plist */,
|
||||
B7C44D14200ED22966A00960 /* Pods */,
|
||||
2BC63D6D5787BDE1BE1CA2E6 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -98,6 +117,17 @@
|
||||
path = Runner;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B7C44D14200ED22966A00960 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B77515FB5AB0901F271935E1 /* Pods-Runner.debug.xcconfig */,
|
||||
58CEA867CEE857662A23AA44 /* Pods-Runner.release.xcconfig */,
|
||||
D4FB3FC7D19154CCF9372164 /* Pods-Runner.profile.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@@ -105,12 +135,14 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||
buildPhases = (
|
||||
B65BB4A0FAFA225023536A8E /* [CP] Check Pods Manifest.lock */,
|
||||
9740EEB61CF901F6004384FC /* Run Script */,
|
||||
97C146EA1CF9000F007C117D /* Sources */,
|
||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||
97C146EC1CF9000F007C117D /* Resources */,
|
||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||
CDD68F33122F6E61B969A1F9 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -163,6 +195,7 @@
|
||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
|
||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
|
||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
|
||||
C2CC0F1923E610831217F9E6 /* GoogleService-Info.plist in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -199,6 +232,45 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||
};
|
||||
B65BB4A0FAFA225023536A8E /* [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;
|
||||
};
|
||||
CDD68F33122F6E61B969A1F9 /* [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;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
|
||||
3
ios/Runner.xcworkspace/contents.xcworkspacedata
generated
3
ios/Runner.xcworkspace/contents.xcworkspacedata
generated
@@ -4,4 +4,7 @@
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
||||
@@ -1,990 +0,0 @@
|
||||
import 'dart:convert';
|
||||
import 'package:strings/strings.dart' as strings;
|
||||
|
||||
import '../utils/extensions/iterable_extensions.dart';
|
||||
import 'pokemon_species.dart';
|
||||
|
||||
class Pokemon {
|
||||
const Pokemon({
|
||||
required this.abilities,
|
||||
required this.baseExperience,
|
||||
required this.forms,
|
||||
required this.gameIndices,
|
||||
required this.height,
|
||||
required this.heldItems,
|
||||
required this.id,
|
||||
required this.isDefault,
|
||||
required this.locationAreaEncounters,
|
||||
required this.moves,
|
||||
required this.name,
|
||||
required this.order,
|
||||
required this.pastTypes,
|
||||
required this.species,
|
||||
required this.sprites,
|
||||
required this.stats,
|
||||
required this.types,
|
||||
required this.weight,
|
||||
required this.speciesData,
|
||||
});
|
||||
|
||||
final List<Ability> abilities;
|
||||
final int? baseExperience;
|
||||
final List<ObjectRef> forms;
|
||||
final List<GameIndex> gameIndices;
|
||||
final int height;
|
||||
final List<HeldItem> heldItems;
|
||||
final int id;
|
||||
final bool isDefault;
|
||||
final String locationAreaEncounters;
|
||||
final List<Move> moves;
|
||||
final String name;
|
||||
final int order;
|
||||
final List<dynamic> pastTypes;
|
||||
final ObjectRef species;
|
||||
final Sprites sprites;
|
||||
final List<Stat> stats;
|
||||
final List<Type> types;
|
||||
final int weight;
|
||||
final PokemonSpecies? speciesData;
|
||||
|
||||
String? get imageUrl =>
|
||||
sprites.other?.home.frontDefault ??
|
||||
sprites.frontDefault ??
|
||||
sprites.versions?.generationViii.icons.frontDefault;
|
||||
|
||||
String get displayName {
|
||||
final speciesName = speciesData?.names
|
||||
.firstWhereOrNull((n) => n.language.name == 'en')
|
||||
?.name;
|
||||
return speciesName != null
|
||||
? strings.capitalize(speciesName)
|
||||
: name.splitMapJoin(
|
||||
RegExp(r'[ -]'),
|
||||
onMatch: (m) =>
|
||||
strings.capitalize(m.input.substring(m.start, m.end)),
|
||||
onNonMatch: (n) => strings.capitalize(n),
|
||||
);
|
||||
}
|
||||
|
||||
String? get formName {
|
||||
final speciesName = species.name;
|
||||
if (speciesName == name) {
|
||||
return null;
|
||||
}
|
||||
final form = name.split('-').last;
|
||||
final presets = {
|
||||
'gmax': 'Gygantamax',
|
||||
'alola': 'Alolan',
|
||||
'galar': 'Galarian',
|
||||
'hisui': 'Hisuian',
|
||||
};
|
||||
return presets[form] ?? strings.capitalize(form);
|
||||
}
|
||||
|
||||
Pokemon copyWith({
|
||||
List<Ability>? abilities,
|
||||
int? baseExperience,
|
||||
List<ObjectRef>? forms,
|
||||
List<GameIndex>? gameIndices,
|
||||
int? height,
|
||||
List<HeldItem>? heldItems,
|
||||
int? id,
|
||||
bool? isDefault,
|
||||
String? locationAreaEncounters,
|
||||
List<Move>? moves,
|
||||
String? name,
|
||||
int? order,
|
||||
List<dynamic>? pastTypes,
|
||||
ObjectRef? species,
|
||||
Sprites? sprites,
|
||||
List<Stat>? stats,
|
||||
List<Type>? types,
|
||||
int? weight,
|
||||
PokemonSpecies? speciesData,
|
||||
}) =>
|
||||
Pokemon(
|
||||
abilities: abilities ?? this.abilities,
|
||||
baseExperience: baseExperience ?? this.baseExperience,
|
||||
forms: forms ?? this.forms,
|
||||
gameIndices: gameIndices ?? this.gameIndices,
|
||||
height: height ?? this.height,
|
||||
heldItems: heldItems ?? this.heldItems,
|
||||
id: id ?? this.id,
|
||||
isDefault: isDefault ?? this.isDefault,
|
||||
locationAreaEncounters:
|
||||
locationAreaEncounters ?? this.locationAreaEncounters,
|
||||
moves: moves ?? this.moves,
|
||||
name: name ?? this.name,
|
||||
order: order ?? this.order,
|
||||
pastTypes: pastTypes ?? this.pastTypes,
|
||||
species: species ?? this.species,
|
||||
sprites: sprites ?? this.sprites,
|
||||
stats: stats ?? this.stats,
|
||||
types: types ?? this.types,
|
||||
weight: weight ?? this.weight,
|
||||
speciesData: speciesData ?? this.speciesData,
|
||||
);
|
||||
|
||||
factory Pokemon.fromRawJson(String str) => Pokemon.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Pokemon.fromJson(Map<String, dynamic> json) => Pokemon(
|
||||
abilities: List<Ability>.from(
|
||||
json["abilities"].map((x) => Ability.fromJson(x))),
|
||||
baseExperience: json["base_experience"],
|
||||
forms: List<ObjectRef>.from(
|
||||
json["forms"].map((x) => ObjectRef.fromJson(x))),
|
||||
gameIndices: List<GameIndex>.from(
|
||||
json["game_indices"].map((x) => GameIndex.fromJson(x))),
|
||||
height: json["height"],
|
||||
heldItems: List<HeldItem>.from(
|
||||
json["held_items"].map((x) => HeldItem.fromJson(x))),
|
||||
id: json["id"],
|
||||
isDefault: json["is_default"],
|
||||
locationAreaEncounters: json["location_area_encounters"],
|
||||
moves: List<Move>.from(json["moves"].map((x) => Move.fromJson(x))),
|
||||
name: json["name"],
|
||||
order: json["order"],
|
||||
pastTypes: List<dynamic>.from(json["past_types"].map((x) => x)),
|
||||
species: ObjectRef.fromJson(json["species"]),
|
||||
sprites: Sprites.fromJson(json["sprites"]),
|
||||
stats: List<Stat>.from(json["stats"].map((x) => Stat.fromJson(x))),
|
||||
types: List<Type>.from(json["types"].map((x) => Type.fromJson(x))),
|
||||
weight: json["weight"],
|
||||
speciesData: json['species_data'] != null
|
||||
? PokemonSpecies.fromJson(json['species_data'])
|
||||
: null,
|
||||
// speciesData: PokemonSpecies.fromJson(json['species_data']),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"abilities": List<dynamic>.from(abilities.map((x) => x.toJson())),
|
||||
"base_experience": baseExperience,
|
||||
"forms": List<dynamic>.from(forms.map((x) => x.toJson())),
|
||||
"game_indices": List<dynamic>.from(gameIndices.map((x) => x.toJson())),
|
||||
"height": height,
|
||||
"held_items": List<dynamic>.from(heldItems.map((x) => x.toJson())),
|
||||
"id": id,
|
||||
"is_default": isDefault,
|
||||
"location_area_encounters": locationAreaEncounters,
|
||||
"moves": List<dynamic>.from(moves.map((x) => x.toJson())),
|
||||
"name": name,
|
||||
"order": order,
|
||||
"past_types": List<dynamic>.from(pastTypes.map((x) => x)),
|
||||
"species": species.toJson(),
|
||||
"sprites": sprites.toJson(),
|
||||
"stats": List<dynamic>.from(stats.map((x) => x.toJson())),
|
||||
"types": List<dynamic>.from(types.map((x) => x.toJson())),
|
||||
"weight": weight,
|
||||
"species_data": speciesData?.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class Ability {
|
||||
Ability({
|
||||
required this.ability,
|
||||
required this.isHidden,
|
||||
required this.slot,
|
||||
});
|
||||
|
||||
final ObjectRef ability;
|
||||
final bool isHidden;
|
||||
final int slot;
|
||||
|
||||
Ability copyWith({
|
||||
ObjectRef? ability,
|
||||
bool? isHidden,
|
||||
int? slot,
|
||||
}) =>
|
||||
Ability(
|
||||
ability: ability ?? this.ability,
|
||||
isHidden: isHidden ?? this.isHidden,
|
||||
slot: slot ?? this.slot,
|
||||
);
|
||||
|
||||
factory Ability.fromRawJson(String str) => Ability.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Ability.fromJson(Map<String, dynamic> json) => Ability(
|
||||
ability: ObjectRef.fromJson(json["ability"]),
|
||||
isHidden: json["is_hidden"],
|
||||
slot: json["slot"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"ability": ability.toJson(),
|
||||
"is_hidden": isHidden,
|
||||
"slot": slot,
|
||||
};
|
||||
}
|
||||
|
||||
class ObjectRef {
|
||||
ObjectRef({
|
||||
required this.name,
|
||||
required this.url,
|
||||
});
|
||||
|
||||
final String name;
|
||||
final String url;
|
||||
|
||||
ObjectRef copyWith({
|
||||
String? name,
|
||||
String? url,
|
||||
}) =>
|
||||
ObjectRef(
|
||||
name: name ?? this.name,
|
||||
url: url ?? this.url,
|
||||
);
|
||||
|
||||
factory ObjectRef.fromRawJson(String str) =>
|
||||
ObjectRef.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory ObjectRef.fromJson(Map<String, dynamic> json) => ObjectRef(
|
||||
name: json["name"],
|
||||
url: json["url"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"name": name,
|
||||
"url": url,
|
||||
};
|
||||
}
|
||||
|
||||
class GameIndex {
|
||||
GameIndex({
|
||||
required this.gameIndex,
|
||||
required this.version,
|
||||
});
|
||||
|
||||
final int gameIndex;
|
||||
final ObjectRef version;
|
||||
|
||||
GameIndex copyWith({
|
||||
int? gameIndex,
|
||||
ObjectRef? version,
|
||||
}) =>
|
||||
GameIndex(
|
||||
gameIndex: gameIndex ?? this.gameIndex,
|
||||
version: version ?? this.version,
|
||||
);
|
||||
|
||||
factory GameIndex.fromRawJson(String str) =>
|
||||
GameIndex.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory GameIndex.fromJson(Map<String, dynamic> json) => GameIndex(
|
||||
gameIndex: json["game_index"],
|
||||
version: ObjectRef.fromJson(json["version"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"game_index": gameIndex,
|
||||
"version": version.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class HeldItem {
|
||||
HeldItem({
|
||||
required this.item,
|
||||
required this.versionDetails,
|
||||
});
|
||||
|
||||
final ObjectRef item;
|
||||
final List<VersionDetail> versionDetails;
|
||||
|
||||
HeldItem copyWith({
|
||||
ObjectRef? item,
|
||||
List<VersionDetail>? versionDetails,
|
||||
}) =>
|
||||
HeldItem(
|
||||
item: item ?? this.item,
|
||||
versionDetails: versionDetails ?? this.versionDetails,
|
||||
);
|
||||
|
||||
factory HeldItem.fromRawJson(String str) =>
|
||||
HeldItem.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory HeldItem.fromJson(Map<String, dynamic> json) => HeldItem(
|
||||
item: ObjectRef.fromJson(json["item"]),
|
||||
versionDetails: List<VersionDetail>.from(
|
||||
json["version_details"].map((x) => VersionDetail.fromJson(x))),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"item": item.toJson(),
|
||||
"version_details":
|
||||
List<dynamic>.from(versionDetails.map((x) => x.toJson())),
|
||||
};
|
||||
}
|
||||
|
||||
class VersionDetail {
|
||||
VersionDetail({
|
||||
required this.rarity,
|
||||
required this.version,
|
||||
});
|
||||
|
||||
final int rarity;
|
||||
final ObjectRef version;
|
||||
|
||||
VersionDetail copyWith({
|
||||
int? rarity,
|
||||
ObjectRef? version,
|
||||
}) =>
|
||||
VersionDetail(
|
||||
rarity: rarity ?? this.rarity,
|
||||
version: version ?? this.version,
|
||||
);
|
||||
|
||||
factory VersionDetail.fromRawJson(String str) =>
|
||||
VersionDetail.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory VersionDetail.fromJson(Map<String, dynamic> json) => VersionDetail(
|
||||
rarity: json["rarity"],
|
||||
version: ObjectRef.fromJson(json["version"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"rarity": rarity,
|
||||
"version": version.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class Move {
|
||||
Move({
|
||||
required this.move,
|
||||
required this.versionGroupDetails,
|
||||
});
|
||||
|
||||
final ObjectRef move;
|
||||
final List<VersionGroupDetail> versionGroupDetails;
|
||||
|
||||
Move copyWith({
|
||||
ObjectRef? move,
|
||||
List<VersionGroupDetail>? versionGroupDetails,
|
||||
}) =>
|
||||
Move(
|
||||
move: move ?? this.move,
|
||||
versionGroupDetails: versionGroupDetails ?? this.versionGroupDetails,
|
||||
);
|
||||
|
||||
factory Move.fromRawJson(String str) => Move.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Move.fromJson(Map<String, dynamic> json) => Move(
|
||||
move: ObjectRef.fromJson(json["move"]),
|
||||
versionGroupDetails: List<VersionGroupDetail>.from(
|
||||
json["version_group_details"]
|
||||
.map((x) => VersionGroupDetail.fromJson(x))),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"move": move.toJson(),
|
||||
"version_group_details":
|
||||
List<dynamic>.from(versionGroupDetails.map((x) => x.toJson())),
|
||||
};
|
||||
}
|
||||
|
||||
class VersionGroupDetail {
|
||||
VersionGroupDetail({
|
||||
required this.levelLearnedAt,
|
||||
required this.moveLearnMethod,
|
||||
required this.versionGroup,
|
||||
});
|
||||
|
||||
final int levelLearnedAt;
|
||||
final ObjectRef moveLearnMethod;
|
||||
final ObjectRef versionGroup;
|
||||
|
||||
VersionGroupDetail copyWith({
|
||||
int? levelLearnedAt,
|
||||
ObjectRef? moveLearnMethod,
|
||||
ObjectRef? versionGroup,
|
||||
}) =>
|
||||
VersionGroupDetail(
|
||||
levelLearnedAt: levelLearnedAt ?? this.levelLearnedAt,
|
||||
moveLearnMethod: moveLearnMethod ?? this.moveLearnMethod,
|
||||
versionGroup: versionGroup ?? this.versionGroup,
|
||||
);
|
||||
|
||||
factory VersionGroupDetail.fromRawJson(String str) =>
|
||||
VersionGroupDetail.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory VersionGroupDetail.fromJson(Map<String, dynamic> json) =>
|
||||
VersionGroupDetail(
|
||||
levelLearnedAt: json["level_learned_at"],
|
||||
moveLearnMethod: ObjectRef.fromJson(json["move_learn_method"]),
|
||||
versionGroup: ObjectRef.fromJson(json["version_group"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"level_learned_at": levelLearnedAt,
|
||||
"move_learn_method": moveLearnMethod.toJson(),
|
||||
"version_group": versionGroup.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class GenerationV {
|
||||
GenerationV({
|
||||
required this.blackWhite,
|
||||
});
|
||||
|
||||
final Sprites blackWhite;
|
||||
|
||||
GenerationV copyWith({
|
||||
Sprites? blackWhite,
|
||||
}) =>
|
||||
GenerationV(
|
||||
blackWhite: blackWhite ?? this.blackWhite,
|
||||
);
|
||||
|
||||
factory GenerationV.fromRawJson(String str) =>
|
||||
GenerationV.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory GenerationV.fromJson(Map<String, dynamic> json) => GenerationV(
|
||||
blackWhite: Sprites.fromJson(json["black-white"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"black-white": blackWhite.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class GenerationVI {
|
||||
GenerationVI({
|
||||
required this.xY,
|
||||
required this.omegaRubyAlphaSapphire,
|
||||
});
|
||||
|
||||
final Sprites xY;
|
||||
final Sprites omegaRubyAlphaSapphire;
|
||||
|
||||
GenerationVI copyWith({
|
||||
Sprites? xY,
|
||||
Sprites? omegaRubyAlphaSapphire,
|
||||
}) =>
|
||||
GenerationVI(
|
||||
xY: xY ?? this.xY,
|
||||
omegaRubyAlphaSapphire:
|
||||
omegaRubyAlphaSapphire ?? this.omegaRubyAlphaSapphire,
|
||||
);
|
||||
|
||||
factory GenerationVI.fromRawJson(String str) =>
|
||||
GenerationVI.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory GenerationVI.fromJson(Map<String, dynamic> json) => GenerationVI(
|
||||
xY: Sprites.fromJson(json["x-y"]),
|
||||
omegaRubyAlphaSapphire:
|
||||
Sprites.fromJson(json["omegaruby-alphasapphire"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"x-y": xY.toJson(),
|
||||
"omegaruby-alphasapphire": xY.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class GenerationIV {
|
||||
GenerationIV({
|
||||
required this.diamondPearl,
|
||||
required this.heartGoldSoulSilver,
|
||||
required this.platinum,
|
||||
});
|
||||
|
||||
final Sprites diamondPearl;
|
||||
final Sprites heartGoldSoulSilver;
|
||||
final Sprites platinum;
|
||||
|
||||
GenerationIV copyWith({
|
||||
Sprites? diamondPearl,
|
||||
Sprites? heartGoldSoulSilver,
|
||||
Sprites? platinum,
|
||||
}) =>
|
||||
GenerationIV(
|
||||
diamondPearl: diamondPearl ?? this.diamondPearl,
|
||||
heartGoldSoulSilver: heartGoldSoulSilver ?? this.heartGoldSoulSilver,
|
||||
platinum: platinum ?? this.platinum,
|
||||
);
|
||||
|
||||
factory GenerationIV.fromRawJson(String str) =>
|
||||
GenerationIV.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory GenerationIV.fromJson(Map<String, dynamic> json) => GenerationIV(
|
||||
diamondPearl: Sprites.fromJson(json["diamond-pearl"]),
|
||||
heartGoldSoulSilver: Sprites.fromJson(json["heartgold-soulsilver"]),
|
||||
platinum: Sprites.fromJson(json["platinum"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"diamond-pearl": diamondPearl.toJson(),
|
||||
"heartgold-soulsilver": heartGoldSoulSilver.toJson(),
|
||||
"platinum": platinum.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class VersionSprites {
|
||||
VersionSprites({
|
||||
required this.generationI,
|
||||
required this.generationIi,
|
||||
required this.generationIii,
|
||||
required this.generationIv,
|
||||
required this.generationV,
|
||||
required this.generationVi,
|
||||
required this.generationVii,
|
||||
required this.generationViii,
|
||||
});
|
||||
|
||||
final GenerationI generationI;
|
||||
final GenerationII generationIi;
|
||||
final GenerationIII generationIii;
|
||||
final GenerationIV generationIv;
|
||||
final GenerationV generationV;
|
||||
final GenerationVI generationVi;
|
||||
final GenerationVII generationVii;
|
||||
final GenerationVIII generationViii;
|
||||
|
||||
VersionSprites copyWith({
|
||||
GenerationI? generationI,
|
||||
GenerationII? generationIi,
|
||||
GenerationIII? generationIii,
|
||||
GenerationIV? generationIv,
|
||||
GenerationV? generationV,
|
||||
GenerationVI? generationVi,
|
||||
GenerationVII? generationVii,
|
||||
GenerationVIII? generationViii,
|
||||
}) =>
|
||||
VersionSprites(
|
||||
generationI: generationI ?? this.generationI,
|
||||
generationIi: generationIi ?? this.generationIi,
|
||||
generationIii: generationIii ?? this.generationIii,
|
||||
generationIv: generationIv ?? this.generationIv,
|
||||
generationV: generationV ?? this.generationV,
|
||||
generationVi: generationVi ?? this.generationVi,
|
||||
generationVii: generationVii ?? this.generationVii,
|
||||
generationViii: generationViii ?? this.generationViii,
|
||||
);
|
||||
|
||||
factory VersionSprites.fromRawJson(String str) =>
|
||||
VersionSprites.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory VersionSprites.fromJson(Map<String, dynamic> json) => VersionSprites(
|
||||
generationI: GenerationI.fromJson(json["generation-i"]),
|
||||
generationIi: GenerationII.fromJson(json["generation-ii"]),
|
||||
generationIii: GenerationIII.fromJson(json["generation-iii"]),
|
||||
generationIv: GenerationIV.fromJson(json["generation-iv"]),
|
||||
generationV: GenerationV.fromJson(json["generation-v"]),
|
||||
generationVi: GenerationVI.fromJson(json["generation-vi"]),
|
||||
generationVii: GenerationVII.fromJson(json["generation-vii"]),
|
||||
generationViii: GenerationVIII.fromJson(json["generation-viii"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"generation-i": generationI.toJson(),
|
||||
"generation-ii": generationIi.toJson(),
|
||||
"generation-iii": generationIii.toJson(),
|
||||
"generation-iv": generationIv.toJson(),
|
||||
"generation-v": generationV.toJson(),
|
||||
"generation-vi": generationVi.toJson(),
|
||||
"generation-vii": generationVii.toJson(),
|
||||
"generation-viii": generationViii.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class Sprites {
|
||||
Sprites({
|
||||
required this.backDefault,
|
||||
required this.backFemale,
|
||||
required this.backShiny,
|
||||
required this.backShinyFemale,
|
||||
required this.frontDefault,
|
||||
required this.frontFemale,
|
||||
required this.frontShiny,
|
||||
required this.frontShinyFemale,
|
||||
required this.other,
|
||||
required this.versions,
|
||||
required this.animated,
|
||||
});
|
||||
|
||||
final String? backDefault;
|
||||
final String? backFemale;
|
||||
final String? backShiny;
|
||||
final String? backShinyFemale;
|
||||
final String? frontDefault;
|
||||
final String? frontFemale;
|
||||
final String? frontShiny;
|
||||
final String? frontShinyFemale;
|
||||
final OtherSprites? other;
|
||||
final VersionSprites? versions;
|
||||
final Sprites? animated;
|
||||
|
||||
Sprites copyWith({
|
||||
String? backDefault,
|
||||
String? backFemale,
|
||||
String? backShiny,
|
||||
String? backShinyFemale,
|
||||
String? frontDefault,
|
||||
String? frontFemale,
|
||||
String? frontShiny,
|
||||
String? frontShinyFemale,
|
||||
OtherSprites? other,
|
||||
VersionSprites? versions,
|
||||
Sprites? animated,
|
||||
}) =>
|
||||
Sprites(
|
||||
backDefault: backDefault ?? this.backDefault,
|
||||
backFemale: backFemale ?? this.backFemale,
|
||||
backShiny: backShiny ?? this.backShiny,
|
||||
backShinyFemale: backShinyFemale ?? this.backShinyFemale,
|
||||
frontDefault: frontDefault ?? this.frontDefault,
|
||||
frontFemale: frontFemale ?? this.frontFemale,
|
||||
frontShiny: frontShiny ?? this.frontShiny,
|
||||
frontShinyFemale: frontShinyFemale ?? this.frontShinyFemale,
|
||||
other: other ?? this.other,
|
||||
versions: versions ?? this.versions,
|
||||
animated: animated ?? this.animated,
|
||||
);
|
||||
|
||||
factory Sprites.fromRawJson(String str) => Sprites.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Sprites.fromJson(Map<String, dynamic> json) => Sprites(
|
||||
backDefault: json["back_default"],
|
||||
backFemale: json["back_female"],
|
||||
backShiny: json["back_shiny"],
|
||||
backShinyFemale: json["back_shiny_female"],
|
||||
frontDefault: json["front_default"],
|
||||
frontFemale: json["front_female"],
|
||||
frontShiny: json["front_shiny"],
|
||||
frontShinyFemale: json["front_shiny_female"],
|
||||
other:
|
||||
json["other"] == null ? null : OtherSprites.fromJson(json["other"]),
|
||||
versions: json["versions"] == null
|
||||
? null
|
||||
: VersionSprites.fromJson(json["versions"]),
|
||||
animated: json["animated"] == null
|
||||
? null
|
||||
: Sprites.fromJson(json["animated"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"back_default": backDefault,
|
||||
"back_female": backFemale,
|
||||
"back_shiny": backShiny,
|
||||
"back_shiny_female": backShinyFemale,
|
||||
"front_default": frontDefault,
|
||||
"front_female": frontFemale,
|
||||
"front_shiny": frontShiny,
|
||||
"front_shiny_female": frontShinyFemale,
|
||||
"other": other?.toJson(),
|
||||
"versions": versions?.toJson(),
|
||||
"animated": animated?.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class GenerationI {
|
||||
GenerationI({
|
||||
required this.redBlue,
|
||||
required this.yellow,
|
||||
});
|
||||
|
||||
final Sprites redBlue;
|
||||
final Sprites yellow;
|
||||
|
||||
GenerationI copyWith({
|
||||
Sprites? redBlue,
|
||||
Sprites? yellow,
|
||||
}) =>
|
||||
GenerationI(
|
||||
redBlue: redBlue ?? this.redBlue,
|
||||
yellow: yellow ?? this.yellow,
|
||||
);
|
||||
|
||||
factory GenerationI.fromRawJson(String str) =>
|
||||
GenerationI.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory GenerationI.fromJson(Map<String, dynamic> json) => GenerationI(
|
||||
redBlue: Sprites.fromJson(json["red-blue"]),
|
||||
yellow: Sprites.fromJson(json["yellow"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"red-blue": redBlue.toJson(),
|
||||
"yellow": yellow.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class GenerationII {
|
||||
GenerationII({
|
||||
required this.crystal,
|
||||
required this.gold,
|
||||
required this.silver,
|
||||
});
|
||||
|
||||
final Sprites crystal;
|
||||
final Sprites gold;
|
||||
final Sprites silver;
|
||||
|
||||
GenerationII copyWith({
|
||||
Sprites? crystal,
|
||||
Sprites? gold,
|
||||
Sprites? silver,
|
||||
}) =>
|
||||
GenerationII(
|
||||
crystal: crystal ?? this.crystal,
|
||||
gold: gold ?? this.gold,
|
||||
silver: silver ?? this.silver,
|
||||
);
|
||||
|
||||
factory GenerationII.fromRawJson(String str) =>
|
||||
GenerationII.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory GenerationII.fromJson(Map<String, dynamic> json) => GenerationII(
|
||||
crystal: Sprites.fromJson(json["crystal"]),
|
||||
gold: Sprites.fromJson(json["gold"]),
|
||||
silver: Sprites.fromJson(json["silver"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"crystal": crystal.toJson(),
|
||||
"gold": gold.toJson(),
|
||||
"silver": silver.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class GenerationIII {
|
||||
GenerationIII({
|
||||
required this.emerald,
|
||||
required this.fireRedLeafGreen,
|
||||
required this.rubySapphire,
|
||||
});
|
||||
|
||||
final Sprites emerald;
|
||||
final Sprites fireRedLeafGreen;
|
||||
final Sprites rubySapphire;
|
||||
|
||||
GenerationIII copyWith({
|
||||
Sprites? emerald,
|
||||
Sprites? fireRedLeafGreen,
|
||||
Sprites? rubySapphire,
|
||||
}) =>
|
||||
GenerationIII(
|
||||
emerald: emerald ?? this.emerald,
|
||||
fireRedLeafGreen: fireRedLeafGreen ?? this.fireRedLeafGreen,
|
||||
rubySapphire: rubySapphire ?? this.rubySapphire,
|
||||
);
|
||||
|
||||
factory GenerationIII.fromRawJson(String str) =>
|
||||
GenerationIII.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory GenerationIII.fromJson(Map<String, dynamic> json) => GenerationIII(
|
||||
emerald: Sprites.fromJson(json["emerald"]),
|
||||
fireRedLeafGreen: Sprites.fromJson(json["firered-leafgreen"]),
|
||||
rubySapphire: Sprites.fromJson(json["ruby-sapphire"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"emerald": emerald.toJson(),
|
||||
"firered-leafgreen": fireRedLeafGreen.toJson(),
|
||||
"ruby-sapphire": rubySapphire.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class GenerationVII {
|
||||
GenerationVII({
|
||||
required this.icons,
|
||||
required this.ultraSunUltraMoon,
|
||||
});
|
||||
|
||||
final Sprites icons;
|
||||
final Sprites ultraSunUltraMoon;
|
||||
|
||||
GenerationVII copyWith({
|
||||
Sprites? icons,
|
||||
Sprites? ultraSunUltraMoon,
|
||||
}) =>
|
||||
GenerationVII(
|
||||
icons: icons ?? this.icons,
|
||||
ultraSunUltraMoon: ultraSunUltraMoon ?? this.ultraSunUltraMoon,
|
||||
);
|
||||
|
||||
factory GenerationVII.fromRawJson(String str) =>
|
||||
GenerationVII.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory GenerationVII.fromJson(Map<String, dynamic> json) => GenerationVII(
|
||||
icons: Sprites.fromJson(json["icons"]),
|
||||
ultraSunUltraMoon: Sprites.fromJson(json["ultra-sun-ultra-moon"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"icons": icons.toJson(),
|
||||
"ultra-sun-ultra-moon": ultraSunUltraMoon.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class GenerationVIII {
|
||||
GenerationVIII({
|
||||
required this.icons,
|
||||
});
|
||||
|
||||
final Sprites icons;
|
||||
|
||||
GenerationVIII copyWith({
|
||||
Sprites? icons,
|
||||
}) =>
|
||||
GenerationVIII(
|
||||
icons: icons ?? this.icons,
|
||||
);
|
||||
|
||||
factory GenerationVIII.fromRawJson(String str) =>
|
||||
GenerationVIII.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory GenerationVIII.fromJson(Map<String, dynamic> json) => GenerationVIII(
|
||||
icons: Sprites.fromJson(json["icons"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"icons": icons.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class OtherSprites {
|
||||
OtherSprites({
|
||||
required this.dreamWorld,
|
||||
required this.home,
|
||||
required this.officialArtwork,
|
||||
});
|
||||
|
||||
final Sprites dreamWorld;
|
||||
final Sprites home;
|
||||
final Sprites officialArtwork;
|
||||
|
||||
OtherSprites copyWith({
|
||||
Sprites? dreamWorld,
|
||||
Sprites? home,
|
||||
Sprites? officialArtwork,
|
||||
}) =>
|
||||
OtherSprites(
|
||||
dreamWorld: dreamWorld ?? this.dreamWorld,
|
||||
home: home ?? this.home,
|
||||
officialArtwork: officialArtwork ?? this.officialArtwork,
|
||||
);
|
||||
|
||||
factory OtherSprites.fromRawJson(String str) =>
|
||||
OtherSprites.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory OtherSprites.fromJson(Map<String, dynamic> json) => OtherSprites(
|
||||
dreamWorld: Sprites.fromJson(json["dream_world"]),
|
||||
home: Sprites.fromJson(json["home"]),
|
||||
officialArtwork: Sprites.fromJson(json["official-artwork"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"dream_world": dreamWorld.toJson(),
|
||||
"home": home.toJson(),
|
||||
"official-artwork": officialArtwork.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class Stat {
|
||||
Stat({
|
||||
required this.baseStat,
|
||||
required this.effort,
|
||||
required this.stat,
|
||||
});
|
||||
|
||||
final int baseStat;
|
||||
final int effort;
|
||||
final ObjectRef stat;
|
||||
|
||||
Stat copyWith({
|
||||
int? baseStat,
|
||||
int? effort,
|
||||
ObjectRef? stat,
|
||||
}) =>
|
||||
Stat(
|
||||
baseStat: baseStat ?? this.baseStat,
|
||||
effort: effort ?? this.effort,
|
||||
stat: stat ?? this.stat,
|
||||
);
|
||||
|
||||
factory Stat.fromRawJson(String str) => Stat.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Stat.fromJson(Map<String, dynamic> json) => Stat(
|
||||
baseStat: json["base_stat"],
|
||||
effort: json["effort"],
|
||||
stat: ObjectRef.fromJson(json["stat"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"base_stat": baseStat,
|
||||
"effort": effort,
|
||||
"stat": stat.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class Type {
|
||||
Type({
|
||||
required this.slot,
|
||||
required this.type,
|
||||
});
|
||||
|
||||
final int slot;
|
||||
final ObjectRef type;
|
||||
|
||||
Type copyWith({
|
||||
int? slot,
|
||||
ObjectRef? type,
|
||||
}) =>
|
||||
Type(
|
||||
slot: slot ?? this.slot,
|
||||
type: type ?? this.type,
|
||||
);
|
||||
|
||||
factory Type.fromRawJson(String str) => Type.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Type.fromJson(Map<String, dynamic> json) => Type(
|
||||
slot: json["slot"],
|
||||
type: ObjectRef.fromJson(json["type"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"slot": slot,
|
||||
"type": type.toJson(),
|
||||
};
|
||||
}
|
||||
38
lib/core/models/pokemon_helper.dart
Normal file
38
lib/core/models/pokemon_helper.dart
Normal file
@@ -0,0 +1,38 @@
|
||||
import 'package:pokemon_api/pokemon_api.dart';
|
||||
import 'package:strings/strings.dart' as strings;
|
||||
|
||||
import '../utils/extensions/string_extensions.dart';
|
||||
import '../utils/extensions/iterable_extensions.dart';
|
||||
|
||||
class PokemonHelper {
|
||||
static String? imageUrl(Pokemon pokemon) =>
|
||||
pokemon.sprites.other?.home.frontDefault ??
|
||||
pokemon.sprites.frontDefault ??
|
||||
pokemon.sprites.versions?.generation8.icons.frontDefault;
|
||||
|
||||
static String? shinyImageUrl(Pokemon pokemon) =>
|
||||
pokemon.sprites.other?.home.frontShiny ??
|
||||
pokemon.sprites.frontShiny ??
|
||||
pokemon.sprites.versions?.generation8.icons.frontShiny;
|
||||
|
||||
static String displayName(PokemonSpecies pokemon) {
|
||||
final speciesName = pokemon.names.firstWhereOrNull((n) => n.language.name == 'en')?.name;
|
||||
|
||||
return speciesName != null ? strings.capitalize(speciesName) : pokemon.name.capitalize();
|
||||
}
|
||||
|
||||
static String? formName(Pokemon pokemon, PokemonSpecies species) {
|
||||
final speciesName = species.name;
|
||||
if (speciesName == pokemon.name) {
|
||||
return null;
|
||||
}
|
||||
final form = pokemon.name.split('-').sublist(1).join(' ');
|
||||
final presets = {
|
||||
'gmax': 'Gygantamax',
|
||||
'alola': 'Alolan',
|
||||
'galar': 'Galarian',
|
||||
'hisui': 'Hisuian',
|
||||
};
|
||||
return presets[form] ?? form.capitalize();
|
||||
}
|
||||
}
|
||||
@@ -1,447 +0,0 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'pokemon.dart';
|
||||
|
||||
class PokemonSpecies {
|
||||
PokemonSpecies({
|
||||
required this.baseHappiness,
|
||||
required this.captureRate,
|
||||
required this.color,
|
||||
required this.eggGroups,
|
||||
required this.evolutionChain,
|
||||
required this.evolvesFromSpecies,
|
||||
required this.flavorTextEntries,
|
||||
required this.formDescriptions,
|
||||
required this.formsSwitchable,
|
||||
required this.genderRate,
|
||||
required this.genera,
|
||||
required this.generation,
|
||||
required this.growthRate,
|
||||
required this.habitat,
|
||||
required this.hasGenderDifferences,
|
||||
required this.hatchCounter,
|
||||
required this.id,
|
||||
required this.isBaby,
|
||||
required this.isLegendary,
|
||||
required this.isMythical,
|
||||
required this.name,
|
||||
required this.names,
|
||||
required this.order,
|
||||
required this.palParkEncounters,
|
||||
required this.pokedexNumbers,
|
||||
required this.shape,
|
||||
required this.varieties,
|
||||
});
|
||||
|
||||
final int? baseHappiness;
|
||||
final int captureRate;
|
||||
final ObjectRef color;
|
||||
final List<ObjectRef> eggGroups;
|
||||
final EvolutionChain? evolutionChain;
|
||||
final ObjectRef? evolvesFromSpecies;
|
||||
final List<FlavorTextEntry> flavorTextEntries;
|
||||
final List<dynamic> formDescriptions;
|
||||
final bool formsSwitchable;
|
||||
final int genderRate;
|
||||
final List<Genus> genera;
|
||||
final ObjectRef generation;
|
||||
final ObjectRef growthRate;
|
||||
final ObjectRef? habitat;
|
||||
final bool hasGenderDifferences;
|
||||
final int? hatchCounter;
|
||||
final int id;
|
||||
final bool isBaby;
|
||||
final bool isLegendary;
|
||||
final bool isMythical;
|
||||
final String name;
|
||||
final List<Name> names;
|
||||
final int order;
|
||||
final List<PalParkEncounter> palParkEncounters;
|
||||
final List<PokedexNumber> pokedexNumbers;
|
||||
final ObjectRef? shape;
|
||||
final List<Variety> varieties;
|
||||
|
||||
PokemonSpecies copyWith({
|
||||
int? baseHappiness,
|
||||
int? captureRate,
|
||||
ObjectRef? color,
|
||||
List<ObjectRef>? eggGroups,
|
||||
EvolutionChain? evolutionChain,
|
||||
ObjectRef? evolvesFromSpecies,
|
||||
List<FlavorTextEntry>? flavorTextEntries,
|
||||
List<dynamic>? formDescriptions,
|
||||
bool? formsSwitchable,
|
||||
int? genderRate,
|
||||
List<Genus>? genera,
|
||||
ObjectRef? generation,
|
||||
ObjectRef? growthRate,
|
||||
ObjectRef? habitat,
|
||||
bool? hasGenderDifferences,
|
||||
int? hatchCounter,
|
||||
int? id,
|
||||
bool? isBaby,
|
||||
bool? isLegendary,
|
||||
bool? isMythical,
|
||||
String? name,
|
||||
List<Name>? names,
|
||||
int? order,
|
||||
List<PalParkEncounter>? palParkEncounters,
|
||||
List<PokedexNumber>? pokedexNumbers,
|
||||
ObjectRef? shape,
|
||||
List<Variety>? varieties,
|
||||
}) =>
|
||||
PokemonSpecies(
|
||||
baseHappiness: baseHappiness ?? this.baseHappiness,
|
||||
captureRate: captureRate ?? this.captureRate,
|
||||
color: color ?? this.color,
|
||||
eggGroups: eggGroups ?? this.eggGroups,
|
||||
evolutionChain: evolutionChain ?? this.evolutionChain,
|
||||
evolvesFromSpecies: evolvesFromSpecies ?? this.evolvesFromSpecies,
|
||||
flavorTextEntries: flavorTextEntries ?? this.flavorTextEntries,
|
||||
formDescriptions: formDescriptions ?? this.formDescriptions,
|
||||
formsSwitchable: formsSwitchable ?? this.formsSwitchable,
|
||||
genderRate: genderRate ?? this.genderRate,
|
||||
genera: genera ?? this.genera,
|
||||
generation: generation ?? this.generation,
|
||||
growthRate: growthRate ?? this.growthRate,
|
||||
habitat: habitat ?? this.habitat,
|
||||
hasGenderDifferences: hasGenderDifferences ?? this.hasGenderDifferences,
|
||||
hatchCounter: hatchCounter ?? this.hatchCounter,
|
||||
id: id ?? this.id,
|
||||
isBaby: isBaby ?? this.isBaby,
|
||||
isLegendary: isLegendary ?? this.isLegendary,
|
||||
isMythical: isMythical ?? this.isMythical,
|
||||
name: name ?? this.name,
|
||||
names: names ?? this.names,
|
||||
order: order ?? this.order,
|
||||
palParkEncounters: palParkEncounters ?? this.palParkEncounters,
|
||||
pokedexNumbers: pokedexNumbers ?? this.pokedexNumbers,
|
||||
shape: shape ?? this.shape,
|
||||
varieties: varieties ?? this.varieties,
|
||||
);
|
||||
|
||||
factory PokemonSpecies.fromRawJson(String str) =>
|
||||
PokemonSpecies.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory PokemonSpecies.fromJson(Map<String, dynamic> json) => PokemonSpecies(
|
||||
baseHappiness: json["base_happiness"],
|
||||
captureRate: json["capture_rate"],
|
||||
color: ObjectRef.fromJson(json["color"]),
|
||||
eggGroups: List<ObjectRef>.from(
|
||||
json["egg_groups"].map((x) => ObjectRef.fromJson(x))),
|
||||
evolutionChain: json["evolution_chain"] != null
|
||||
? EvolutionChain.fromJson(json["evolution_chain"])
|
||||
: null,
|
||||
evolvesFromSpecies: json["evolves_from_species"] == null
|
||||
? null
|
||||
: ObjectRef.fromJson(json["evolves_from_species"]),
|
||||
flavorTextEntries: List<FlavorTextEntry>.from(
|
||||
json["flavor_text_entries"]
|
||||
.map((x) => FlavorTextEntry.fromJson(x))),
|
||||
formDescriptions:
|
||||
List<dynamic>.from(json["form_descriptions"].map((x) => x)),
|
||||
formsSwitchable: json["forms_switchable"],
|
||||
genderRate: json["gender_rate"],
|
||||
genera: List<Genus>.from(json["genera"].map((x) => Genus.fromJson(x))),
|
||||
generation: ObjectRef.fromJson(json["generation"]),
|
||||
growthRate: ObjectRef.fromJson(json["growth_rate"]),
|
||||
habitat: json["habitat"] == null
|
||||
? null
|
||||
: ObjectRef.fromJson(json["habitat"]),
|
||||
hasGenderDifferences: json["has_gender_differences"],
|
||||
hatchCounter: json["hatch_counter"],
|
||||
id: json["id"],
|
||||
isBaby: json["is_baby"],
|
||||
isLegendary: json["is_legendary"],
|
||||
isMythical: json["is_mythical"],
|
||||
name: json["name"],
|
||||
names: List<Name>.from(json["names"].map((x) => Name.fromJson(x))),
|
||||
order: json["order"],
|
||||
palParkEncounters: List<PalParkEncounter>.from(
|
||||
json["pal_park_encounters"]
|
||||
.map((x) => PalParkEncounter.fromJson(x))),
|
||||
pokedexNumbers: List<PokedexNumber>.from(
|
||||
json["pokedex_numbers"].map((x) => PokedexNumber.fromJson(x))),
|
||||
shape: json["shape"] != null ? ObjectRef.fromJson(json["shape"]) : null,
|
||||
varieties: List<Variety>.from(
|
||||
json["varieties"].map((x) => Variety.fromJson(x))),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"base_happiness": baseHappiness,
|
||||
"capture_rate": captureRate,
|
||||
"color": color.toJson(),
|
||||
"egg_groups": List<dynamic>.from(eggGroups.map((x) => x.toJson())),
|
||||
"evolution_chain": evolutionChain?.toJson(),
|
||||
"evolves_from_species": evolvesFromSpecies?.toJson(),
|
||||
"flavor_text_entries":
|
||||
List<dynamic>.from(flavorTextEntries.map((x) => x.toJson())),
|
||||
"form_descriptions": List<dynamic>.from(formDescriptions.map((x) => x)),
|
||||
"forms_switchable": formsSwitchable,
|
||||
"gender_rate": genderRate,
|
||||
"genera": List<dynamic>.from(genera.map((x) => x.toJson())),
|
||||
"generation": generation.toJson(),
|
||||
"growth_rate": growthRate.toJson(),
|
||||
"habitat": habitat?.toJson(),
|
||||
"has_gender_differences": hasGenderDifferences,
|
||||
"hatch_counter": hatchCounter,
|
||||
"id": id,
|
||||
"is_baby": isBaby,
|
||||
"is_legendary": isLegendary,
|
||||
"is_mythical": isMythical,
|
||||
"name": name,
|
||||
"names": List<dynamic>.from(names.map((x) => x.toJson())),
|
||||
"order": order,
|
||||
"pal_park_encounters":
|
||||
List<dynamic>.from(palParkEncounters.map((x) => x.toJson())),
|
||||
"pokedex_numbers":
|
||||
List<dynamic>.from(pokedexNumbers.map((x) => x.toJson())),
|
||||
"shape": shape?.toJson(),
|
||||
"varieties": List<dynamic>.from(varieties.map((x) => x.toJson())),
|
||||
};
|
||||
}
|
||||
|
||||
class EvolutionChain {
|
||||
EvolutionChain({
|
||||
required this.url,
|
||||
});
|
||||
|
||||
final String url;
|
||||
|
||||
EvolutionChain copyWith({
|
||||
String? url,
|
||||
}) =>
|
||||
EvolutionChain(
|
||||
url: url ?? this.url,
|
||||
);
|
||||
|
||||
factory EvolutionChain.fromRawJson(String str) =>
|
||||
EvolutionChain.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory EvolutionChain.fromJson(Map<String, dynamic> json) => EvolutionChain(
|
||||
url: json["url"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"url": url,
|
||||
};
|
||||
}
|
||||
|
||||
class FlavorTextEntry {
|
||||
FlavorTextEntry({
|
||||
required this.flavorText,
|
||||
required this.language,
|
||||
required this.version,
|
||||
});
|
||||
|
||||
final String flavorText;
|
||||
final ObjectRef language;
|
||||
final ObjectRef version;
|
||||
|
||||
FlavorTextEntry copyWith({
|
||||
String? flavorText,
|
||||
ObjectRef? language,
|
||||
ObjectRef? version,
|
||||
}) =>
|
||||
FlavorTextEntry(
|
||||
flavorText: flavorText ?? this.flavorText,
|
||||
language: language ?? this.language,
|
||||
version: version ?? this.version,
|
||||
);
|
||||
|
||||
factory FlavorTextEntry.fromRawJson(String str) =>
|
||||
FlavorTextEntry.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory FlavorTextEntry.fromJson(Map<String, dynamic> json) =>
|
||||
FlavorTextEntry(
|
||||
flavorText: json["flavor_text"],
|
||||
language: ObjectRef.fromJson(json["language"]),
|
||||
version: ObjectRef.fromJson(json["version"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"flavor_text": flavorText,
|
||||
"language": language.toJson(),
|
||||
"version": version.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class Genus {
|
||||
Genus({
|
||||
required this.genus,
|
||||
required this.language,
|
||||
});
|
||||
|
||||
final String genus;
|
||||
final ObjectRef language;
|
||||
|
||||
Genus copyWith({
|
||||
String? genus,
|
||||
ObjectRef? language,
|
||||
}) =>
|
||||
Genus(
|
||||
genus: genus ?? this.genus,
|
||||
language: language ?? this.language,
|
||||
);
|
||||
|
||||
factory Genus.fromRawJson(String str) => Genus.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Genus.fromJson(Map<String, dynamic> json) => Genus(
|
||||
genus: json["genus"],
|
||||
language: ObjectRef.fromJson(json["language"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"genus": genus,
|
||||
"language": language.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class Name {
|
||||
Name({
|
||||
required this.language,
|
||||
required this.name,
|
||||
});
|
||||
|
||||
final ObjectRef language;
|
||||
final String name;
|
||||
|
||||
Name copyWith({
|
||||
ObjectRef? language,
|
||||
String? name,
|
||||
}) =>
|
||||
Name(
|
||||
language: language ?? this.language,
|
||||
name: name ?? this.name,
|
||||
);
|
||||
|
||||
factory Name.fromRawJson(String str) => Name.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Name.fromJson(Map<String, dynamic> json) => Name(
|
||||
language: ObjectRef.fromJson(json["language"]),
|
||||
name: json["name"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"language": language.toJson(),
|
||||
"name": name,
|
||||
};
|
||||
}
|
||||
|
||||
class PalParkEncounter {
|
||||
PalParkEncounter({
|
||||
required this.area,
|
||||
required this.baseScore,
|
||||
required this.rate,
|
||||
});
|
||||
|
||||
final ObjectRef area;
|
||||
final int baseScore;
|
||||
final int rate;
|
||||
|
||||
PalParkEncounter copyWith({
|
||||
ObjectRef? area,
|
||||
int? baseScore,
|
||||
int? rate,
|
||||
}) =>
|
||||
PalParkEncounter(
|
||||
area: area ?? this.area,
|
||||
baseScore: baseScore ?? this.baseScore,
|
||||
rate: rate ?? this.rate,
|
||||
);
|
||||
|
||||
factory PalParkEncounter.fromRawJson(String str) =>
|
||||
PalParkEncounter.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory PalParkEncounter.fromJson(Map<String, dynamic> json) =>
|
||||
PalParkEncounter(
|
||||
area: ObjectRef.fromJson(json["area"]),
|
||||
baseScore: json["base_score"],
|
||||
rate: json["rate"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"area": area.toJson(),
|
||||
"base_score": baseScore,
|
||||
"rate": rate,
|
||||
};
|
||||
}
|
||||
|
||||
class PokedexNumber {
|
||||
PokedexNumber({
|
||||
required this.entryNumber,
|
||||
required this.pokedex,
|
||||
});
|
||||
|
||||
final int entryNumber;
|
||||
final ObjectRef pokedex;
|
||||
|
||||
PokedexNumber copyWith({
|
||||
int? entryNumber,
|
||||
ObjectRef? pokedex,
|
||||
}) =>
|
||||
PokedexNumber(
|
||||
entryNumber: entryNumber ?? this.entryNumber,
|
||||
pokedex: pokedex ?? this.pokedex,
|
||||
);
|
||||
|
||||
factory PokedexNumber.fromRawJson(String str) =>
|
||||
PokedexNumber.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory PokedexNumber.fromJson(Map<String, dynamic> json) => PokedexNumber(
|
||||
entryNumber: json["entry_number"],
|
||||
pokedex: ObjectRef.fromJson(json["pokedex"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"entry_number": entryNumber,
|
||||
"pokedex": pokedex.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class Variety {
|
||||
Variety({
|
||||
required this.isDefault,
|
||||
required this.pokemon,
|
||||
});
|
||||
|
||||
final bool isDefault;
|
||||
final ObjectRef pokemon;
|
||||
|
||||
Variety copyWith({
|
||||
bool? isDefault,
|
||||
ObjectRef? pokemon,
|
||||
}) =>
|
||||
Variety(
|
||||
isDefault: isDefault ?? this.isDefault,
|
||||
pokemon: pokemon ?? this.pokemon,
|
||||
);
|
||||
|
||||
factory Variety.fromRawJson(String str) => Variety.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Variety.fromJson(Map<String, dynamic> json) => Variety(
|
||||
isDefault: json["is_default"],
|
||||
pokemon: ObjectRef.fromJson(json["pokemon"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"is_default": isDefault,
|
||||
"pokemon": pokemon.toJson(),
|
||||
};
|
||||
}
|
||||
11
lib/core/utils/extensions/string_extensions.dart
Normal file
11
lib/core/utils/extensions/string_extensions.dart
Normal file
@@ -0,0 +1,11 @@
|
||||
import 'package:strings/strings.dart' as strings;
|
||||
|
||||
extension StringCapitalization on String {
|
||||
String capitalize() {
|
||||
return splitMapJoin(
|
||||
RegExp(r'[ -]'),
|
||||
onMatch: (m) => strings.capitalize(m.input.substring(m.start, m.end)),
|
||||
onNonMatch: (n) => strings.capitalize(n),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,9 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:crypto/crypto.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:localstore/localstore.dart';
|
||||
import 'package:pokemon_api/pokemon_api.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'core/routes.dart';
|
||||
@@ -6,7 +11,44 @@ import 'modules/PokemonDetails/pokemon_details_page.dart';
|
||||
import 'modules/PokemonList/pokemon_list_controller.dart';
|
||||
import 'modules/PokemonList/pokemon_list_page.dart';
|
||||
|
||||
class LocalstoreCache extends CacheManager {
|
||||
static const String collection = 'cache';
|
||||
|
||||
String _filename(String key) => '${md5.convert(utf8.encode(key))}.json';
|
||||
|
||||
@override
|
||||
Future<void> add(String key, value) {
|
||||
return Localstore.instance.collection(collection).doc(_filename(key)).set(value);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> clear() {
|
||||
return Localstore.instance.collection(collection).delete();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> contains(String key) async {
|
||||
return (await Localstore.instance.collection(collection).doc(_filename(key)).get()) != null;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> fill(Map<String, dynamic> cache) {
|
||||
return Future.wait(cache.entries.map((doc) => add(doc.key, doc.value)));
|
||||
}
|
||||
|
||||
@override
|
||||
Future get(String key) {
|
||||
return Localstore.instance.collection(collection).doc(_filename(key)).get();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> remove(String key) {
|
||||
return Localstore.instance.collection(collection).doc(_filename(key)).delete();
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
PokemonAPIClient.instance.setCache(LocalstoreCache());
|
||||
runApp(const MyApp());
|
||||
}
|
||||
|
||||
@@ -119,3 +161,4 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:pokedex/core/models/pokemon_helper.dart';
|
||||
import 'pokemon_details_args.dart';
|
||||
import '../PokemonList/pokemon_list_controller.dart';
|
||||
import '../../widgets/pokemon_image.dart';
|
||||
@@ -6,18 +7,31 @@ import '../../widgets/pokemon_image.dart';
|
||||
class PokemonDetailsPage extends StatelessWidget {
|
||||
const PokemonDetailsPage({super.key});
|
||||
|
||||
PokemonDetailsArgs argsOf(BuildContext context) => PokemonDetailsArgs.of(context);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final ctrl = PokemonListController.of(context);
|
||||
final poke = ctrl.pokemonMap[PokemonDetailsArgs.of(context).name]!;
|
||||
final args = argsOf(context);
|
||||
final poke = ctrl.pokemonMap[args.name]!;
|
||||
final species = ctrl.speciesMap[poke.species.name]!;
|
||||
|
||||
final children = <Widget Function()>[
|
||||
() => Text(poke.displayName),
|
||||
() => PokemonImage(poke: poke, size: 250),
|
||||
() => Text(PokemonHelper.displayName(species)),
|
||||
() => Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Hero(
|
||||
tag: 'pokemon-${poke.name}',
|
||||
child: PokemonImage(poke: poke, size: 250),
|
||||
),
|
||||
PokemonImage(poke: poke, size: 250, shiny: true),
|
||||
],
|
||||
),
|
||||
];
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(poke.displayName),
|
||||
title: Text(PokemonHelper.displayName(species)),
|
||||
),
|
||||
body: ListView.builder(
|
||||
itemBuilder: (context, index) => children[index].call(),
|
||||
@@ -26,3 +40,4 @@ class PokemonDetailsPage extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,30 +1,76 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:pokedex/data/pokemon.dart';
|
||||
import 'package:pokemon_api/pokemon_api.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../core/models/pokemon.dart';
|
||||
|
||||
class PokemonListController extends ChangeNotifier {
|
||||
bool loading = false;
|
||||
Iterable<Pokemon> pokemonList = [];
|
||||
List<Pokemon> pokemonList = [];
|
||||
Map<String, Pokemon> pokemonMap = {};
|
||||
List<PokemonSpecies> speciesList = [];
|
||||
Map<String, PokemonSpecies> speciesMap = {};
|
||||
|
||||
PokemonListController() {
|
||||
debugPrint('PokemonListController()');
|
||||
getPokemon();
|
||||
}
|
||||
|
||||
static PokemonListController of(BuildContext context) =>
|
||||
Provider.of<PokemonListController>(context, listen: false);
|
||||
static PokemonListController of(BuildContext context) => Provider.of<PokemonListController>(context, listen: false);
|
||||
|
||||
Future<void> getPokemon() async {
|
||||
debugPrint('getPokemon()');
|
||||
loading = true;
|
||||
await Future.microtask(() {
|
||||
pokemonMap = getAllPokemon();
|
||||
pokemonList = pokemonMap.values;
|
||||
});
|
||||
final pokemonListResources = await PokemonAPIClient.instance.getPokemonList(PageOptions(), maxPages: null);
|
||||
final pokemonSpeciesListResources =
|
||||
await PokemonAPIClient.instance.getPokemonSpeciesList(PageOptions(), maxPages: null);
|
||||
|
||||
final pokemonFutures = <Future<Pokemon>>[];
|
||||
final speciesFutures = <Future<PokemonSpecies>>[];
|
||||
|
||||
var i = 0;
|
||||
for (final resource in pokemonListResources) {
|
||||
pokemonFutures.add(resource.get());
|
||||
if (i < pokemonSpeciesListResources.length) {
|
||||
speciesFutures.add(pokemonSpeciesListResources[i].get());
|
||||
}
|
||||
|
||||
if (pokemonFutures.length == 5) {
|
||||
await Future.wait([
|
||||
Future.wait(pokemonFutures).then((value) => pokemonList.addAll(value)),
|
||||
Future.wait(speciesFutures).then((value) => speciesList.addAll(value)),
|
||||
]);
|
||||
pokemonFutures.clear();
|
||||
speciesFutures.clear();
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
if (pokemonFutures.isNotEmpty) {
|
||||
await Future.wait(pokemonFutures).then((value) => pokemonList.addAll(value));
|
||||
}
|
||||
|
||||
if (speciesFutures.isNotEmpty) {
|
||||
await Future.wait(speciesFutures).then((value) => speciesList.addAll(value));
|
||||
}
|
||||
|
||||
pokemonMap = Map.fromEntries(pokemonList.map((e) => MapEntry(e.name, e)));
|
||||
speciesMap = Map.fromEntries(speciesList.map((e) => MapEntry(e.name, e)));
|
||||
loading = false;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
class ProgressReporter {
|
||||
final int total;
|
||||
int count = 0;
|
||||
ProgressReporter(this.total);
|
||||
|
||||
void increment() {
|
||||
count++;
|
||||
debugPrint('ProgressReporter: $count/$total');
|
||||
}
|
||||
|
||||
bool get isDone => count >= total;
|
||||
|
||||
double get progress => count / total;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:pokedex/core/models/pokemon_helper.dart';
|
||||
import 'package:pokedex/modules/PokemonList/pokemon_list_controller.dart';
|
||||
import 'package:pokemon_api/pokemon_api.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../core/models/pokemon.dart';
|
||||
import '../../widgets/pokemon_list_item.dart';
|
||||
|
||||
class PokemonListPage extends StatefulWidget {
|
||||
@@ -18,6 +19,8 @@ class _PokemonListPageState extends State<PokemonListPage> {
|
||||
bool searching = false;
|
||||
bool afterInit = false;
|
||||
|
||||
PokemonListController get ctrl => PokemonListController.of(context);
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -54,27 +57,37 @@ class _PokemonListPageState extends State<PokemonListPage> {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
PokemonListController get ctrl => PokemonListController.of(context);
|
||||
|
||||
Iterable<Pokemon> _applyFilters(Iterable<Pokemon> list) =>
|
||||
list.where((poke) => [poke.displayName, poke.formName]
|
||||
.join(' ')
|
||||
.toLowerCase()
|
||||
.contains(search.text.toLowerCase()));
|
||||
Iterable<Pokemon> _applyFilters(Iterable<Pokemon> list) => list.where((poke) {
|
||||
final species = ctrl.speciesMap[poke.species.name];
|
||||
return [
|
||||
species != null ? PokemonHelper.displayName(species) : null,
|
||||
species != null ? PokemonHelper.formName(poke, species) : null,
|
||||
poke.name,
|
||||
].whereType<String>().join(' ').toLowerCase().contains(search.text.toLowerCase());
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
debugPrint("pokemon count: ${ctrl.pokemonList.length}");
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: searching
|
||||
? TextField(
|
||||
controller: search,
|
||||
decoration: const InputDecoration(hintText: 'Search by name'),
|
||||
autofocus: true,
|
||||
)
|
||||
: const Text('Pokedex')),
|
||||
title: searching
|
||||
? TextField(
|
||||
controller: search,
|
||||
decoration: InputDecoration(
|
||||
hintText: 'Search by name',
|
||||
suffixIcon: search.text.isNotEmpty
|
||||
? IconButton(
|
||||
icon: const Icon(Icons.close),
|
||||
onPressed: () => search.clear(),
|
||||
)
|
||||
: null,
|
||||
),
|
||||
autofocus: true,
|
||||
)
|
||||
: const Text('Pokedex'),
|
||||
),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
// child: const Icon(Icons.catching_pokemon),
|
||||
child: const Icon(Icons.search),
|
||||
onPressed: () => setState(() => searching = !searching),
|
||||
),
|
||||
@@ -99,3 +112,4 @@ class _PokemonListPageState extends State<PokemonListPage> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../core/models/pokemon.dart';
|
||||
import 'package:pokedex/core/models/pokemon_helper.dart';
|
||||
import 'package:pokemon_api/pokemon_api.dart';
|
||||
|
||||
class PokemonImage extends StatelessWidget {
|
||||
const PokemonImage({
|
||||
super.key,
|
||||
this.size = 64,
|
||||
required this.poke,
|
||||
this.shiny = false,
|
||||
});
|
||||
|
||||
final Pokemon poke;
|
||||
final double size;
|
||||
final bool shiny;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CachedNetworkImage(
|
||||
imageUrl: poke.imageUrl!,
|
||||
imageUrl: !shiny ? PokemonHelper.imageUrl(poke)! : PokemonHelper.shinyImageUrl(poke)!,
|
||||
width: size,
|
||||
height: size,
|
||||
progressIndicatorBuilder: (context, url, progress) => const Center(
|
||||
@@ -26,3 +28,4 @@ class PokemonImage extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:pokedex/core/models/pokemon_helper.dart';
|
||||
import 'package:pokedex/core/routes.dart';
|
||||
import 'package:pokedex/core/utils/extensions/string_extensions.dart';
|
||||
import 'package:pokedex/modules/PokemonDetails/pokemon_details_args.dart';
|
||||
import 'package:pokemon_api/pokemon_api.dart';
|
||||
|
||||
import '../core/models/pokemon.dart';
|
||||
import '../core/routes.dart';
|
||||
import '../modules/PokemonList/pokemon_list_controller.dart';
|
||||
import 'pokemon_image.dart';
|
||||
|
||||
class PokemonListItem extends StatelessWidget {
|
||||
@@ -16,6 +18,8 @@ class PokemonListItem extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final species = PokemonListController.of(context).speciesMap[poke.species.name];
|
||||
print('poke: ${poke.name}, species: ${species?.name}');
|
||||
return Card(
|
||||
child: InkWell(
|
||||
onTap: () => Navigator.pushNamed(
|
||||
@@ -27,18 +31,19 @@ class PokemonListItem extends StatelessWidget {
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8).copyWith(top: 0),
|
||||
child: poke.imageUrl != null
|
||||
? SizedBox.square(
|
||||
dimension: 64,
|
||||
child: PokemonImage(poke: poke, size: 64),
|
||||
)
|
||||
: const SizedBox.square(dimension: 64),
|
||||
child: Hero(
|
||||
tag: 'pokemon-${poke.name}',
|
||||
child: PokemonImage(poke: poke, size: 64),
|
||||
// child: poke != null
|
||||
// ? PokemonImage(poke: poke, size: 64)
|
||||
// : const SizedBox.square(dimension: 64, child: Placeholder()),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Text(
|
||||
[
|
||||
poke.displayName,
|
||||
poke.formName != null ? '(${poke.formName})' : null,
|
||||
species != null ? PokemonHelper.displayName(species) : poke.name.capitalize(),
|
||||
species != null && PokemonHelper.formName(poke, species) != null ? '(${PokemonHelper.formName(poke, species)})' : null,
|
||||
].whereType<String>().join(' '),
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
@@ -48,3 +53,4 @@ class PokemonListItem extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,8 +8,6 @@ import Foundation
|
||||
import cloud_firestore
|
||||
import firebase_auth
|
||||
import firebase_core
|
||||
import firebase_crashlytics
|
||||
import firebase_remote_config
|
||||
import path_provider_macos
|
||||
import shared_preferences_macos
|
||||
import sign_in_with_apple
|
||||
@@ -20,8 +18,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin"))
|
||||
FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin"))
|
||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||
FLTFirebaseCrashlyticsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCrashlyticsPlugin"))
|
||||
FLTFirebaseRemoteConfigPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseRemoteConfigPlugin"))
|
||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||
SignInWithApplePlugin.register(with: registry.registrar(forPlugin: "SignInWithApplePlugin"))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
platform :osx, '10.13'
|
||||
platform :osx, '10.14'
|
||||
|
||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||
|
||||
@@ -602,65 +602,40 @@ PODS:
|
||||
- BoringSSL-GRPC/Implementation (0.0.24):
|
||||
- BoringSSL-GRPC/Interface (= 0.0.24)
|
||||
- BoringSSL-GRPC/Interface (0.0.24)
|
||||
- cloud_firestore (4.1.0):
|
||||
- Firebase/CoreOnly (~> 10.2.0)
|
||||
- Firebase/Firestore (~> 10.2.0)
|
||||
- cloud_firestore (4.2.0):
|
||||
- Firebase/CoreOnly (~> 10.3.0)
|
||||
- Firebase/Firestore (~> 10.3.0)
|
||||
- firebase_core
|
||||
- FlutterMacOS
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- Firebase/Auth (10.2.0):
|
||||
- Firebase/Auth (10.3.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseAuth (~> 10.2.0)
|
||||
- Firebase/CoreOnly (10.2.0):
|
||||
- FirebaseCore (= 10.2.0)
|
||||
- Firebase/Crashlytics (10.2.0):
|
||||
- FirebaseAuth (~> 10.3.0)
|
||||
- Firebase/CoreOnly (10.3.0):
|
||||
- FirebaseCore (= 10.3.0)
|
||||
- Firebase/Firestore (10.3.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseCrashlytics (~> 10.2.0)
|
||||
- Firebase/Firestore (10.2.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseFirestore (~> 10.2.0)
|
||||
- Firebase/RemoteConfig (10.2.0):
|
||||
- Firebase/CoreOnly
|
||||
- FirebaseRemoteConfig (~> 10.2.0)
|
||||
- firebase_auth (4.1.5):
|
||||
- Firebase/Auth (~> 10.2.0)
|
||||
- Firebase/CoreOnly (~> 10.2.0)
|
||||
- FirebaseFirestore (~> 10.3.0)
|
||||
- firebase_auth (4.2.0):
|
||||
- Firebase/Auth (~> 10.3.0)
|
||||
- Firebase/CoreOnly (~> 10.3.0)
|
||||
- firebase_core
|
||||
- FlutterMacOS
|
||||
- firebase_core (2.3.0):
|
||||
- Firebase/CoreOnly (~> 10.2.0)
|
||||
- firebase_core (2.4.0):
|
||||
- Firebase/CoreOnly (~> 10.3.0)
|
||||
- FlutterMacOS
|
||||
- firebase_crashlytics (3.0.6):
|
||||
- Firebase/CoreOnly (~> 10.2.0)
|
||||
- Firebase/Crashlytics (~> 10.2.0)
|
||||
- firebase_core
|
||||
- FlutterMacOS
|
||||
- firebase_remote_config (3.0.6):
|
||||
- Firebase/CoreOnly (~> 10.2.0)
|
||||
- Firebase/RemoteConfig (~> 10.2.0)
|
||||
- firebase_core
|
||||
- FlutterMacOS
|
||||
- FirebaseABTesting (10.3.0):
|
||||
- FirebaseCore (~> 10.0)
|
||||
- FirebaseAuth (10.2.0):
|
||||
- FirebaseAuth (10.3.0):
|
||||
- FirebaseCore (~> 10.0)
|
||||
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- GTMSessionFetcher/Core (< 4.0, >= 2.1)
|
||||
- FirebaseCore (10.2.0):
|
||||
- FirebaseCore (10.3.0):
|
||||
- FirebaseCoreInternal (~> 10.0)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- GoogleUtilities/Logger (~> 7.8)
|
||||
- FirebaseCoreInternal (10.3.0):
|
||||
- FirebaseCoreInternal (10.11.0):
|
||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
||||
- FirebaseCrashlytics (10.2.0):
|
||||
- FirebaseCore (~> 10.0)
|
||||
- FirebaseInstallations (~> 10.0)
|
||||
- GoogleDataTransport (~> 9.2)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- PromisesObjC (~> 2.1)
|
||||
- FirebaseFirestore (10.2.0):
|
||||
- FirebaseFirestore (10.3.0):
|
||||
- abseil/algorithm (~> 1.20211102.0)
|
||||
- abseil/base (~> 1.20211102.0)
|
||||
- abseil/container/flat_hash_map (~> 1.20211102.0)
|
||||
@@ -673,41 +648,24 @@ PODS:
|
||||
- "gRPC-C++ (~> 1.44.0)"
|
||||
- leveldb-library (~> 1.22)
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- FirebaseInstallations (10.3.0):
|
||||
- FirebaseCore (~> 10.0)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- GoogleUtilities/UserDefaults (~> 7.8)
|
||||
- PromisesObjC (~> 2.1)
|
||||
- FirebaseRemoteConfig (10.2.0):
|
||||
- FirebaseABTesting (~> 10.0)
|
||||
- FirebaseCore (~> 10.0)
|
||||
- FirebaseInstallations (~> 10.0)
|
||||
- GoogleUtilities/Environment (~> 7.8)
|
||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
||||
- FlutterMacOS (1.0.0)
|
||||
- FMDB (2.7.5):
|
||||
- FMDB/standard (= 2.7.5)
|
||||
- FMDB/standard (2.7.5)
|
||||
- GoogleDataTransport (9.2.0):
|
||||
- GoogleUtilities/Environment (~> 7.7)
|
||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
||||
- PromisesObjC (< 3.0, >= 1.2)
|
||||
- GoogleUtilities/AppDelegateSwizzler (7.10.0):
|
||||
- GoogleUtilities/AppDelegateSwizzler (7.11.1):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/Network
|
||||
- GoogleUtilities/Environment (7.10.0):
|
||||
- GoogleUtilities/Environment (7.11.1):
|
||||
- PromisesObjC (< 3.0, >= 1.2)
|
||||
- GoogleUtilities/Logger (7.10.0):
|
||||
- GoogleUtilities/Logger (7.11.1):
|
||||
- GoogleUtilities/Environment
|
||||
- GoogleUtilities/Network (7.10.0):
|
||||
- GoogleUtilities/Network (7.11.1):
|
||||
- GoogleUtilities/Logger
|
||||
- "GoogleUtilities/NSData+zlib"
|
||||
- GoogleUtilities/Reachability
|
||||
- "GoogleUtilities/NSData+zlib (7.10.0)"
|
||||
- GoogleUtilities/Reachability (7.10.0):
|
||||
- GoogleUtilities/Logger
|
||||
- GoogleUtilities/UserDefaults (7.10.0):
|
||||
- "GoogleUtilities/NSData+zlib (7.11.1)"
|
||||
- GoogleUtilities/Reachability (7.11.1):
|
||||
- GoogleUtilities/Logger
|
||||
- "gRPC-C++ (1.44.0)":
|
||||
- "gRPC-C++/Implementation (= 1.44.0)"
|
||||
@@ -760,8 +718,8 @@ PODS:
|
||||
- gRPC-Core/Interface (= 1.44.0)
|
||||
- Libuv-gRPC (= 0.0.10)
|
||||
- gRPC-Core/Interface (1.44.0)
|
||||
- GTMSessionFetcher/Core (3.0.0)
|
||||
- leveldb-library (1.22.1)
|
||||
- GTMSessionFetcher/Core (3.1.1)
|
||||
- leveldb-library (1.22.2)
|
||||
- Libuv-gRPC (0.0.10):
|
||||
- Libuv-gRPC/Implementation (= 0.0.10)
|
||||
- Libuv-gRPC/Interface (= 0.0.10)
|
||||
@@ -775,7 +733,7 @@ PODS:
|
||||
- nanopb/encode (2.30909.0)
|
||||
- path_provider_macos (0.0.1):
|
||||
- FlutterMacOS
|
||||
- PromisesObjC (2.1.1)
|
||||
- PromisesObjC (2.2.0)
|
||||
- shared_preferences_macos (0.0.1):
|
||||
- FlutterMacOS
|
||||
- sign_in_with_apple (0.0.1):
|
||||
@@ -790,8 +748,6 @@ DEPENDENCIES:
|
||||
- cloud_firestore (from `Flutter/ephemeral/.symlinks/plugins/cloud_firestore/macos`)
|
||||
- firebase_auth (from `Flutter/ephemeral/.symlinks/plugins/firebase_auth/macos`)
|
||||
- firebase_core (from `Flutter/ephemeral/.symlinks/plugins/firebase_core/macos`)
|
||||
- firebase_crashlytics (from `Flutter/ephemeral/.symlinks/plugins/firebase_crashlytics/macos`)
|
||||
- firebase_remote_config (from `Flutter/ephemeral/.symlinks/plugins/firebase_remote_config/macos`)
|
||||
- FlutterMacOS (from `Flutter/ephemeral`)
|
||||
- path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`)
|
||||
- shared_preferences_macos (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos`)
|
||||
@@ -804,16 +760,11 @@ SPEC REPOS:
|
||||
- abseil
|
||||
- BoringSSL-GRPC
|
||||
- Firebase
|
||||
- FirebaseABTesting
|
||||
- FirebaseAuth
|
||||
- FirebaseCore
|
||||
- FirebaseCoreInternal
|
||||
- FirebaseCrashlytics
|
||||
- FirebaseFirestore
|
||||
- FirebaseInstallations
|
||||
- FirebaseRemoteConfig
|
||||
- FMDB
|
||||
- GoogleDataTransport
|
||||
- GoogleUtilities
|
||||
- "gRPC-C++"
|
||||
- gRPC-Core
|
||||
@@ -830,10 +781,6 @@ EXTERNAL SOURCES:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/firebase_auth/macos
|
||||
firebase_core:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/firebase_core/macos
|
||||
firebase_crashlytics:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/firebase_crashlytics/macos
|
||||
firebase_remote_config:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/firebase_remote_config/macos
|
||||
FlutterMacOS:
|
||||
:path: Flutter/ephemeral
|
||||
path_provider_macos:
|
||||
@@ -850,37 +797,30 @@ EXTERNAL SOURCES:
|
||||
SPEC CHECKSUMS:
|
||||
abseil: ebe5b5529fb05d93a8bdb7951607be08b7fa71bc
|
||||
BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33
|
||||
cloud_firestore: 5bfd8f92a2f11f9d25a0ee69303ca069cadc7637
|
||||
Firebase: a3ea7eba4382afd83808376edb99acdaff078dcf
|
||||
firebase_auth: 89ed93a8d1d8f657fec8fe149bdeeb02e55c92d4
|
||||
firebase_core: f6f75d92dcdd5ef1b43876017affde02b7b402ec
|
||||
firebase_crashlytics: e8ef15b4479fcdff5b4e4e2bec9e503a3a0c1a19
|
||||
firebase_remote_config: 6ab273e930bca58db45485074073e54ea6173860
|
||||
FirebaseABTesting: e6660693429b4663573c82f8d2f1041deff1753a
|
||||
FirebaseAuth: 08e7739244eeae5216d0a3f8d9f16a76be9c252e
|
||||
FirebaseCore: 813838072b797b64f529f3c2ee35e696e5641dd1
|
||||
FirebaseCoreInternal: 29b76f784d607df8b2a1259d73c3f04f1210137b
|
||||
FirebaseCrashlytics: df7406152189d48346deafb716806d7bd9ebb573
|
||||
FirebaseFirestore: bda7a1ca8c19319a2acd2761cd4b962022c1d5ea
|
||||
FirebaseInstallations: e2f26126089dcf41e215f7b8925af8d953c7d602
|
||||
FirebaseRemoteConfig: 5bdeadd64a042dad0f6a38fee7e017818240c3d2
|
||||
FlutterMacOS: 85f90bfb3f1703249cf1539e4dfbff31e8584698
|
||||
cloud_firestore: 9d2cc3475f9f2f3cbb7099c8c17bc7e23fccfbf2
|
||||
Firebase: f92fc551ead69c94168d36c2b26188263860acd9
|
||||
firebase_auth: 845851827499eb92e56bed878ff756ae75c0324e
|
||||
firebase_core: 7bd6c8dabdeba26600cf939a5f59b20e78156d7c
|
||||
FirebaseAuth: 0e415d29d846c1dce2fb641e46f35e9888d9bec6
|
||||
FirebaseCore: 988754646ab3bd4bdcb740f1bfe26b9f6c0d5f2a
|
||||
FirebaseCoreInternal: 9e46c82a14a3b3a25be4e1e151ce6d21536b89c0
|
||||
FirebaseFirestore: 244f71ff14ef44f39e00b44d356eac708ce03103
|
||||
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||
GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f
|
||||
GoogleUtilities: bad72cb363809015b1f7f19beb1f1cd23c589f95
|
||||
GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749
|
||||
"gRPC-C++": 9675f953ace2b3de7c506039d77be1f2e77a8db2
|
||||
gRPC-Core: 943e491cb0d45598b0b0eb9e910c88080369290b
|
||||
GTMSessionFetcher: c1edebe64e9fb4e8f6415d018edf1fd3eac074a1
|
||||
leveldb-library: 50c7b45cbd7bf543c81a468fe557a16ae3db8729
|
||||
GTMSessionFetcher: e8647203b65cee28c5f73d0f473d096653945e72
|
||||
leveldb-library: f03246171cce0484482ec291f88b6d563699ee06
|
||||
Libuv-gRPC: 55e51798e14ef436ad9bc45d12d43b77b49df378
|
||||
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
|
||||
path_provider_macos: 3c0c3b4b0d4a76d2bf989a913c2de869c5641a19
|
||||
PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb
|
||||
PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef
|
||||
shared_preferences_macos: a64dc611287ed6cbe28fd1297898db1336975727
|
||||
sign_in_with_apple: a9e97e744e8edc36aefc2723111f652102a7a727
|
||||
sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea
|
||||
wakelock_macos: bc3f2a9bd8d2e6c89fee1e1822e7ddac3bd004a9
|
||||
|
||||
PODFILE CHECKSUM: a884f6dd3f7494f3892ee6c81feea3a3abbf9153
|
||||
PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
/* End PBXAggregateTarget section */
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1E595A3214DA9687C2EEDD33 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 759A7BFF29CB8253C577BDA3 /* GoogleService-Info.plist */; };
|
||||
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
|
||||
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
|
||||
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
|
||||
@@ -68,6 +69,7 @@
|
||||
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
|
||||
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
|
||||
69925F0F6FF72430A287E27B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
759A7BFF29CB8253C577BDA3 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
75CA243D7B808268DDE27297 /* 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>"; };
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
|
||||
@@ -106,6 +108,7 @@
|
||||
33CC10EE2044A3C60003C045 /* Products */,
|
||||
D73912EC22F37F3D000D13A0 /* Frameworks */,
|
||||
FCCE5DF74820964B24566096 /* Pods */,
|
||||
759A7BFF29CB8253C577BDA3 /* GoogleService-Info.plist */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -167,7 +170,6 @@
|
||||
75CA243D7B808268DDE27297 /* Pods-Runner.release.xcconfig */,
|
||||
A68B3A09A66BCC18FAA0BF11 /* Pods-Runner.profile.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -185,6 +187,7 @@
|
||||
33CC110E2044A8840003C045 /* Bundle Framework */,
|
||||
3399D490228B24CF009A79C7 /* ShellScript */,
|
||||
A09979528FB9ECC4475F5769 /* [CP] Embed Pods Frameworks */,
|
||||
701C8C718B7F59663EA21B6A /* [firebase_crashlytics] Crashlytics Upload Symbols (disabled) */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -203,7 +206,7 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0920;
|
||||
LastUpgradeCheck = 1300;
|
||||
LastUpgradeCheck = 1430;
|
||||
ORGANIZATIONNAME = "";
|
||||
TargetAttributes = {
|
||||
33CC10EC2044A3C60003C045 = {
|
||||
@@ -248,6 +251,7 @@
|
||||
files = (
|
||||
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
|
||||
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
|
||||
1E595A3214DA9687C2EEDD33 /* GoogleService-Info.plist in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -314,6 +318,26 @@
|
||||
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;
|
||||
};
|
||||
701C8C718B7F59663EA21B6A /* [firebase_crashlytics] Crashlytics Upload Symbols (disabled) */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}\"",
|
||||
"\"$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)\"",
|
||||
);
|
||||
name = "[firebase_crashlytics] Crashlytics Upload Symbols (disabled)";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# \"$PODS_ROOT/FirebaseCrashlytics/upload-symbols\" --flutter-project \"$PROJECT_DIR/firebase_app_id_file.json\" \n";
|
||||
};
|
||||
A09979528FB9ECC4475F5769 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -405,7 +429,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = macosx;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
@@ -484,7 +508,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
@@ -531,7 +555,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = macosx;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1300"
|
||||
LastUpgradeVersion = "1430"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
||||
447
pubspec.lock
447
pubspec.lock
File diff suppressed because it is too large
Load Diff
16
pubspec.yaml
16
pubspec.yaml
@@ -37,8 +37,8 @@ dependencies:
|
||||
cupertino_icons: ^1.0.2
|
||||
firebase_core: ^2.3.0
|
||||
cloud_firestore: ^4.1.0
|
||||
firebase_crashlytics: ^3.0.6
|
||||
firebase_remote_config: ^3.0.6
|
||||
# firebase_crashlytics: ^3.0.6
|
||||
# firebase_remote_config: ^3.0.6
|
||||
firebase_auth: ^4.1.5
|
||||
provider: ^6.0.4
|
||||
shared_preferences: ^2.0.15
|
||||
@@ -51,6 +51,15 @@ dependencies:
|
||||
intl_generator: ^0.4.0
|
||||
sqflite: ^2.2.2
|
||||
strings: ^0.2.2
|
||||
palette_generator: ^0.3.3+2
|
||||
# pokemon_api:
|
||||
# git:
|
||||
# url: https://github.com/chenasraf/pokemon_api_dart.git
|
||||
# ref: master
|
||||
pokemon_api:
|
||||
path: ../pokemon_api
|
||||
localstore: ^1.3.5
|
||||
crypto: ^3.0.3
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
@@ -66,6 +75,7 @@ dev_dependencies:
|
||||
# rules and activating additional ones.
|
||||
flutter_lints: ^2.0.0
|
||||
queue: ^3.1.0+2
|
||||
btool: ^0.1.2
|
||||
|
||||
# For information on the generic Dart part of this file, see the
|
||||
# following page: https://dart.dev/tools/pub/pubspec
|
||||
@@ -117,7 +127,7 @@ script_runner:
|
||||
- name: get-name
|
||||
cmd: dart run btool get packageName
|
||||
suppress_header_output: true
|
||||
- push: 'version=$(get-version); name=$(get-name); echo "Pushing ${name}-$version.apk"; adb push build/app/outputs/flutter-apk/app-release.apk /sdcard/Download/${name}-${version}.apk'
|
||||
- push: 'version=$(get-version); name=$(get-name); echo "Pushing ${name}-$version.apk"; adb push "build/app/outputs/flutter-apk/app-release.apk" "/sdcard/Download/${name}-${version}.apk"'
|
||||
- install: adb install -r build/app/outputs/flutter-apk/app-release.apk
|
||||
- to-device: build:apk && push && install
|
||||
- auto-fix: dart fix --apply
|
||||
|
||||
Reference in New Issue
Block a user