mirror of
https://github.com/ente-io/ente.git
synced 2025-08-14 10:16:10 +00:00
[mob][photos] Upgrade flutter (#1434)
## Description - Update flutter - Update packages - Fix UI issues because of update (material 3) - bump up version to v0.8.80 ## Tests - [x] Building on android and iOS. --------- Co-authored-by: Neeraj Gupta <254676+ua741@users.noreply.github.com>
This commit is contained in:
2
.github/workflows/mobile-lint.yml
vendored
2
.github/workflows/mobile-lint.yml
vendored
@@ -9,7 +9,7 @@ on:
|
|||||||
- ".github/workflows/mobile-lint.yml"
|
- ".github/workflows/mobile-lint.yml"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
FLUTTER_VERSION: "3.13.4"
|
FLUTTER_VERSION: "3.19.5"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
|
2
.github/workflows/mobile-release.yml
vendored
2
.github/workflows/mobile-release.yml
vendored
@@ -9,7 +9,7 @@ on:
|
|||||||
- "photos-v*"
|
- "photos-v*"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
FLUTTER_VERSION: "3.13.4"
|
FLUTTER_VERSION: "3.19.5"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@@ -53,10 +53,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: args
|
name: args
|
||||||
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
|
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.2"
|
version: "2.5.0"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -157,10 +157,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: built_value
|
name: built_value
|
||||||
sha256: fedde275e0a6b798c3296963c5cd224e3e1b55d0e478d5b7e65e6b540f363a0e
|
sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.9.1"
|
version: "8.9.2"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -318,10 +318,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: dio
|
name: dio
|
||||||
sha256: "0978e9a3e45305a80a7210dbeaf79d6ee8bee33f70c8e542dc654c952070217f"
|
sha256: "639179e1cc0957779e10dd5b786ce180c477c4c0aca5aaba5d1700fa2e834801"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.4.2+1"
|
version: "5.4.3"
|
||||||
dotted_border:
|
dotted_border:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -586,10 +586,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: flutter_plugin_android_lifecycle
|
name: flutter_plugin_android_lifecycle
|
||||||
sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da
|
sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.17"
|
version: "2.0.19"
|
||||||
flutter_secure_storage:
|
flutter_secure_storage:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -1053,18 +1053,18 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
|
sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.3"
|
||||||
path_provider_android:
|
path_provider_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_android
|
name: path_provider_android
|
||||||
sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668"
|
sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.2"
|
version: "2.2.4"
|
||||||
path_provider_foundation:
|
path_provider_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1133,10 +1133,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: pointycastle
|
name: pointycastle
|
||||||
sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29"
|
sha256: "70fe966348fe08c34bf929582f1d8247d9d9408130723206472b4687227e4333"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.7.4"
|
version: "3.8.0"
|
||||||
pool:
|
pool:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1221,18 +1221,18 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sentry
|
name: sentry
|
||||||
sha256: a460aa48568d47140dd0557410b624d344ffb8c05555107ac65035c1097cf1ad
|
sha256: fe99a06970b909a491b7f89d54c9b5119772e3a48a400308a6e129625b333f5b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.18.0"
|
version: "7.19.0"
|
||||||
sentry_flutter:
|
sentry_flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sentry_flutter
|
name: sentry_flutter
|
||||||
sha256: "3d0d1d4e0e407d276ae8128d123263ccbc37e988bae906765efd6f37d544f4c6"
|
sha256: fc013d4a753447320f62989b1871fdc1f20c77befcc8be3e38774dd7402e7a62
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.18.0"
|
version: "7.19.0"
|
||||||
share_plus:
|
share_plus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -1253,18 +1253,18 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: shared_preferences
|
name: shared_preferences
|
||||||
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
|
sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.2"
|
version: "2.2.3"
|
||||||
shared_preferences_android:
|
shared_preferences_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_android
|
name: shared_preferences_android
|
||||||
sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06"
|
sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1"
|
version: "2.2.2"
|
||||||
shared_preferences_foundation:
|
shared_preferences_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1387,10 +1387,10 @@ packages:
|
|||||||
description:
|
description:
|
||||||
path: sqflite
|
path: sqflite
|
||||||
ref: HEAD
|
ref: HEAD
|
||||||
resolved-ref: "075b3e2f81e691a19a500e7ff6db2953de7f83a9"
|
resolved-ref: f281785e12e8b1abf2f9d41a587fc83d810724cf
|
||||||
url: "https://github.com/tekartik/sqflite"
|
url: "https://github.com/tekartik/sqflite"
|
||||||
source: git
|
source: git
|
||||||
version: "2.3.2"
|
version: "2.3.3"
|
||||||
sqflite_common:
|
sqflite_common:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1411,10 +1411,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sqlite3
|
name: sqlite3
|
||||||
sha256: "072128763f1547e3e9b4735ce846bfd226d68019ccda54db4cd427b12dfdedc9"
|
sha256: "1abbeb84bf2b1a10e5e1138c913123c8aa9d83cd64e5f9a0dd847b3c83063202"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.4.2"
|
||||||
sqlite3_flutter_libs:
|
sqlite3_flutter_libs:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -1515,10 +1515,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: tray_manager
|
name: tray_manager
|
||||||
sha256: "4ab709d70a4374af172f8c39e018db33a4271265549c6fc9d269a65e5f4b0225"
|
sha256: e0ac9a88b2700f366b8629b97e8663b6ef450a2f169560a685dc167bfe9c9c29
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.1"
|
version: "0.2.2"
|
||||||
tuple:
|
tuple:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -1547,18 +1547,18 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: url_launcher
|
name: url_launcher
|
||||||
sha256: "0ecc004c62fd3ed36a2ffcbe0dd9700aee63bd7532d0b642a488b1ec310f492e"
|
sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.2.5"
|
version: "6.2.6"
|
||||||
url_launcher_android:
|
url_launcher_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_android
|
name: url_launcher_android
|
||||||
sha256: d4ed0711849dd8e33eb2dd69c25db0d0d3fdc37e0a62e629fe32f57a22db2745
|
sha256: "360a6ed2027f18b73c8d98e159dda67a61b7f2e0f6ec26e86c3ada33b0621775"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.3.0"
|
version: "6.3.1"
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1611,10 +1611,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: uuid
|
name: uuid
|
||||||
sha256: cd210a09f7c18cbe5a02511718e0334de6559871052c90a90c0cca46a4aa81c8
|
sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.3.3"
|
version: "4.4.0"
|
||||||
vector_graphics:
|
vector_graphics:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1675,18 +1675,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web_socket_channel
|
name: web_socket_channel
|
||||||
sha256: "1d8e795e2a8b3730c41b8a98a2dff2e0fb57ae6f0764a1c46ec5915387d257b2"
|
sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.4"
|
version: "2.4.5"
|
||||||
win32:
|
win32:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: win32
|
name: win32
|
||||||
sha256: "8cb58b45c47dcb42ab3651533626161d6b67a2921917d8d429791f76972b3480"
|
sha256: "0a989dc7ca2bb51eac91e8fd00851297cfffd641aa7538b165c62637ca0eaa4a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.3.0"
|
version: "5.4.0"
|
||||||
win32_registry:
|
win32_registry:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@@ -46,7 +46,7 @@ You can alternatively install the build from PlayStore or F-Droid.
|
|||||||
|
|
||||||
## 🧑💻 Building from source
|
## 🧑💻 Building from source
|
||||||
|
|
||||||
1. [Install Flutter v3.13.4](https://flutter.dev/docs/get-started/install).
|
1. [Install Flutter v3.19.5](https://flutter.dev/docs/get-started/install).
|
||||||
|
|
||||||
2. Pull in all submodules with `git submodule update --init --recursive`
|
2. Pull in all submodules with `git submodule update --init --recursive`
|
||||||
|
|
||||||
|
@@ -1,3 +1,8 @@
|
|||||||
|
plugins {
|
||||||
|
id "com.android.application"
|
||||||
|
id "kotlin-android"
|
||||||
|
id "dev.flutter.flutter-gradle-plugin"
|
||||||
|
}
|
||||||
def localProperties = new Properties()
|
def localProperties = new Properties()
|
||||||
def localPropertiesFile = rootProject.file('local.properties')
|
def localPropertiesFile = rootProject.file('local.properties')
|
||||||
if (localPropertiesFile.exists()) {
|
if (localPropertiesFile.exists()) {
|
||||||
@@ -6,11 +11,6 @@ if (localPropertiesFile.exists()) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
|
||||||
if (flutterRoot == null) {
|
|
||||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||||
if (flutterVersionCode == null) {
|
if (flutterVersionCode == null) {
|
||||||
flutterVersionCode = '1'
|
flutterVersionCode = '1'
|
||||||
@@ -21,10 +21,6 @@ if (flutterVersionName == null) {
|
|||||||
flutterVersionName = '1.0'
|
flutterVersionName = '1.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
|
||||||
|
|
||||||
def keystoreProperties = new Properties()
|
def keystoreProperties = new Properties()
|
||||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||||
if (keystorePropertiesFile.exists()) {
|
if (keystorePropertiesFile.exists()) {
|
||||||
@@ -126,7 +122,7 @@ flutter {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'io.sentry:sentry-android:2.0.0'
|
implementation 'io.sentry:sentry-android:2.0.0'
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.21"
|
||||||
implementation 'com.android.support:multidex:1.0.3'
|
implementation 'com.android.support:multidex:1.0.3'
|
||||||
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
|
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
|
@@ -1,16 +1,5 @@
|
|||||||
buildscript {
|
ext {
|
||||||
ext.kotlin_version = '1.8.21'
|
appCompatVersion = '1.1.0' // for background_fetch
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
|
|
||||||
ext.appCompatVersion = '1.1.0' // for background_fetch
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
||||||
classpath 'com.android.tools.build:gradle:7.1.2' // for background_fetch
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
|
@@ -1,15 +1,25 @@
|
|||||||
include ':app'
|
pluginManagement {
|
||||||
|
def flutterSdkPath = {
|
||||||
|
def properties = new Properties()
|
||||||
|
file("local.properties").withInputStream { properties.load(it) }
|
||||||
|
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||||
|
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||||
|
return flutterSdkPath
|
||||||
|
}()
|
||||||
|
|
||||||
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
|
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
||||||
|
|
||||||
def plugins = new Properties()
|
repositories {
|
||||||
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
|
google()
|
||||||
if (pluginsFile.exists()) {
|
mavenCentral()
|
||||||
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins.each { name, path ->
|
plugins {
|
||||||
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
|
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||||
include ":$name"
|
id "com.android.application" version "7.1.2" apply false
|
||||||
project(":$name").projectDir = pluginDirectory
|
id "org.jetbrains.kotlin.android" version "1.8.21" apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
include ":app"
|
@@ -1,8 +1,11 @@
|
|||||||
PODS:
|
PODS:
|
||||||
- background_fetch (1.2.1):
|
- background_fetch (1.3.2):
|
||||||
- Flutter
|
- Flutter
|
||||||
- battery_info (0.0.1):
|
- battery_info (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- bonsoir_darwin (3.0.0):
|
||||||
|
- Flutter
|
||||||
|
- FlutterMacOS
|
||||||
- connectivity_plus (0.0.1):
|
- connectivity_plus (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- ReachabilitySwift
|
- ReachabilitySwift
|
||||||
@@ -10,38 +13,38 @@ PODS:
|
|||||||
- Flutter
|
- Flutter
|
||||||
- file_saver (0.0.1):
|
- file_saver (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- Firebase/CoreOnly (10.18.0):
|
- Firebase/CoreOnly (10.22.0):
|
||||||
- FirebaseCore (= 10.18.0)
|
- FirebaseCore (= 10.22.0)
|
||||||
- Firebase/Messaging (10.18.0):
|
- Firebase/Messaging (10.22.0):
|
||||||
- Firebase/CoreOnly
|
- Firebase/CoreOnly
|
||||||
- FirebaseMessaging (~> 10.18.0)
|
- FirebaseMessaging (~> 10.22.0)
|
||||||
- firebase_core (2.24.2):
|
- firebase_core (2.29.0):
|
||||||
- Firebase/CoreOnly (= 10.18.0)
|
- Firebase/CoreOnly (= 10.22.0)
|
||||||
- Flutter
|
- Flutter
|
||||||
- firebase_messaging (14.7.10):
|
- firebase_messaging (14.7.19):
|
||||||
- Firebase/Messaging (= 10.18.0)
|
- Firebase/Messaging (= 10.22.0)
|
||||||
- firebase_core
|
- firebase_core
|
||||||
- Flutter
|
- Flutter
|
||||||
- FirebaseCore (10.18.0):
|
- FirebaseCore (10.22.0):
|
||||||
- FirebaseCoreInternal (~> 10.0)
|
- FirebaseCoreInternal (~> 10.0)
|
||||||
- GoogleUtilities/Environment (~> 7.12)
|
- GoogleUtilities/Environment (~> 7.12)
|
||||||
- GoogleUtilities/Logger (~> 7.12)
|
- GoogleUtilities/Logger (~> 7.12)
|
||||||
- FirebaseCoreInternal (10.21.0):
|
- FirebaseCoreInternal (10.24.0):
|
||||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
||||||
- FirebaseInstallations (10.21.0):
|
- FirebaseInstallations (10.24.0):
|
||||||
- FirebaseCore (~> 10.0)
|
- FirebaseCore (~> 10.0)
|
||||||
- GoogleUtilities/Environment (~> 7.8)
|
- GoogleUtilities/Environment (~> 7.8)
|
||||||
- GoogleUtilities/UserDefaults (~> 7.8)
|
- GoogleUtilities/UserDefaults (~> 7.8)
|
||||||
- PromisesObjC (~> 2.1)
|
- PromisesObjC (~> 2.1)
|
||||||
- FirebaseMessaging (10.18.0):
|
- FirebaseMessaging (10.22.0):
|
||||||
- FirebaseCore (~> 10.0)
|
- FirebaseCore (~> 10.0)
|
||||||
- FirebaseInstallations (~> 10.0)
|
- FirebaseInstallations (~> 10.0)
|
||||||
- GoogleDataTransport (~> 9.2)
|
- GoogleDataTransport (~> 9.3)
|
||||||
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
|
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
|
||||||
- GoogleUtilities/Environment (~> 7.8)
|
- GoogleUtilities/Environment (~> 7.8)
|
||||||
- GoogleUtilities/Reachability (~> 7.8)
|
- GoogleUtilities/Reachability (~> 7.8)
|
||||||
- GoogleUtilities/UserDefaults (~> 7.8)
|
- GoogleUtilities/UserDefaults (~> 7.8)
|
||||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
- nanopb (< 2.30911.0, >= 2.30908.0)
|
||||||
- fk_user_agent (2.0.0):
|
- fk_user_agent (2.0.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- Flutter (1.0.0)
|
- Flutter (1.0.0)
|
||||||
@@ -70,27 +73,35 @@ PODS:
|
|||||||
- fluttertoast (0.0.2):
|
- fluttertoast (0.0.2):
|
||||||
- Flutter
|
- Flutter
|
||||||
- Toast
|
- Toast
|
||||||
- GoogleDataTransport (9.3.0):
|
- GoogleDataTransport (9.4.1):
|
||||||
- GoogleUtilities/Environment (~> 7.7)
|
- GoogleUtilities/Environment (~> 7.7)
|
||||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
- nanopb (< 2.30911.0, >= 2.30908.0)
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
- PromisesObjC (< 3.0, >= 1.2)
|
||||||
- GoogleUtilities/AppDelegateSwizzler (7.12.0):
|
- GoogleUtilities/AppDelegateSwizzler (7.13.0):
|
||||||
- GoogleUtilities/Environment
|
- GoogleUtilities/Environment
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/Network
|
- GoogleUtilities/Network
|
||||||
- GoogleUtilities/Environment (7.12.0):
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/Environment (7.13.0):
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
- PromisesObjC (< 3.0, >= 1.2)
|
||||||
- GoogleUtilities/Logger (7.12.0):
|
- GoogleUtilities/Logger (7.13.0):
|
||||||
- GoogleUtilities/Environment
|
- GoogleUtilities/Environment
|
||||||
- GoogleUtilities/Network (7.12.0):
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/Network (7.13.0):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- "GoogleUtilities/NSData+zlib"
|
- "GoogleUtilities/NSData+zlib"
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Reachability
|
- GoogleUtilities/Reachability
|
||||||
- "GoogleUtilities/NSData+zlib (7.12.0)"
|
- "GoogleUtilities/NSData+zlib (7.13.0)":
|
||||||
- GoogleUtilities/Reachability (7.12.0):
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/Privacy (7.13.0)
|
||||||
|
- GoogleUtilities/Reachability (7.13.0):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/UserDefaults (7.12.0):
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/UserDefaults (7.13.0):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
- home_widget (0.0.1):
|
- home_widget (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- image_editor_common (1.0.0):
|
- image_editor_common (1.0.0):
|
||||||
@@ -114,6 +125,8 @@ PODS:
|
|||||||
- libwebp/sharpyuv (1.3.2)
|
- libwebp/sharpyuv (1.3.2)
|
||||||
- libwebp/webp (1.3.2):
|
- libwebp/webp (1.3.2):
|
||||||
- libwebp/sharpyuv
|
- libwebp/sharpyuv
|
||||||
|
- local_auth_darwin (0.0.1):
|
||||||
|
- Flutter
|
||||||
- local_auth_ios (0.0.1):
|
- local_auth_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- Mantle (2.2.0):
|
- Mantle (2.2.0):
|
||||||
@@ -131,11 +144,11 @@ PODS:
|
|||||||
- Flutter
|
- Flutter
|
||||||
- move_to_background (0.0.1):
|
- move_to_background (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- nanopb (2.30909.1):
|
- nanopb (2.30910.0):
|
||||||
- nanopb/decode (= 2.30909.1)
|
- nanopb/decode (= 2.30910.0)
|
||||||
- nanopb/encode (= 2.30909.1)
|
- nanopb/encode (= 2.30910.0)
|
||||||
- nanopb/decode (2.30909.1)
|
- nanopb/decode (2.30910.0)
|
||||||
- nanopb/encode (2.30909.1)
|
- nanopb/encode (2.30910.0)
|
||||||
- onnxruntime (0.0.1):
|
- onnxruntime (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- onnxruntime-objc (= 1.15.1)
|
- onnxruntime-objc (= 1.15.1)
|
||||||
@@ -152,30 +165,30 @@ PODS:
|
|||||||
- path_provider_foundation (0.0.1):
|
- path_provider_foundation (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- permission_handler_apple (9.1.1):
|
- permission_handler_apple (9.3.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- photo_manager (2.0.0):
|
- photo_manager (2.0.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- PromisesObjC (2.3.1)
|
- PromisesObjC (2.4.0)
|
||||||
- ReachabilitySwift (5.0.0)
|
- ReachabilitySwift (5.2.1)
|
||||||
- receive_sharing_intent (1.6.7):
|
- receive_sharing_intent (1.6.8):
|
||||||
- Flutter
|
- Flutter
|
||||||
- screen_brightness_ios (0.1.0):
|
- screen_brightness_ios (0.1.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- SDWebImage (5.18.11):
|
- SDWebImage (5.19.1):
|
||||||
- SDWebImage/Core (= 5.18.11)
|
- SDWebImage/Core (= 5.19.1)
|
||||||
- SDWebImage/Core (5.18.11)
|
- SDWebImage/Core (5.19.1)
|
||||||
- SDWebImageWebPCoder (0.14.5):
|
- SDWebImageWebPCoder (0.14.5):
|
||||||
- libwebp (~> 1.0)
|
- libwebp (~> 1.0)
|
||||||
- SDWebImage/Core (~> 5.17)
|
- SDWebImage/Core (~> 5.17)
|
||||||
- Sentry/HybridSDK (8.18.0):
|
- Sentry/HybridSDK (8.21.0):
|
||||||
- SentryPrivate (= 8.18.0)
|
- SentryPrivate (= 8.21.0)
|
||||||
- sentry_flutter (0.0.1):
|
- sentry_flutter (7.19.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- Sentry/HybridSDK (= 8.18.0)
|
- Sentry/HybridSDK (= 8.21.0)
|
||||||
- SentryPrivate (8.18.0)
|
- SentryPrivate (8.21.0)
|
||||||
- share_plus (0.0.1):
|
- share_plus (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- shared_preferences_foundation (0.0.1):
|
- shared_preferences_foundation (0.0.1):
|
||||||
@@ -199,7 +212,7 @@ PODS:
|
|||||||
- sqlite3/fts5
|
- sqlite3/fts5
|
||||||
- sqlite3/perf-threadsafe
|
- sqlite3/perf-threadsafe
|
||||||
- sqlite3/rtree
|
- sqlite3/rtree
|
||||||
- Toast (4.1.0)
|
- Toast (4.1.1)
|
||||||
- uni_links (0.0.1):
|
- uni_links (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- url_launcher_ios (0.0.1):
|
- url_launcher_ios (0.0.1):
|
||||||
@@ -218,6 +231,7 @@ PODS:
|
|||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- background_fetch (from `.symlinks/plugins/background_fetch/ios`)
|
- background_fetch (from `.symlinks/plugins/background_fetch/ios`)
|
||||||
- battery_info (from `.symlinks/plugins/battery_info/ios`)
|
- battery_info (from `.symlinks/plugins/battery_info/ios`)
|
||||||
|
- bonsoir_darwin (from `.symlinks/plugins/bonsoir_darwin/darwin`)
|
||||||
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
||||||
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||||
- file_saver (from `.symlinks/plugins/file_saver/ios`)
|
- file_saver (from `.symlinks/plugins/file_saver/ios`)
|
||||||
@@ -238,6 +252,7 @@ DEPENDENCIES:
|
|||||||
- in_app_purchase_storekit (from `.symlinks/plugins/in_app_purchase_storekit/darwin`)
|
- in_app_purchase_storekit (from `.symlinks/plugins/in_app_purchase_storekit/darwin`)
|
||||||
- integration_test (from `.symlinks/plugins/integration_test/ios`)
|
- integration_test (from `.symlinks/plugins/integration_test/ios`)
|
||||||
- isar_flutter_libs (from `.symlinks/plugins/isar_flutter_libs/ios`)
|
- isar_flutter_libs (from `.symlinks/plugins/isar_flutter_libs/ios`)
|
||||||
|
- local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`)
|
||||||
- local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`)
|
- local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`)
|
||||||
- media_extension (from `.symlinks/plugins/media_extension/ios`)
|
- media_extension (from `.symlinks/plugins/media_extension/ios`)
|
||||||
- media_kit_libs_ios_video (from `.symlinks/plugins/media_kit_libs_ios_video/ios`)
|
- media_kit_libs_ios_video (from `.symlinks/plugins/media_kit_libs_ios_video/ios`)
|
||||||
@@ -294,6 +309,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/background_fetch/ios"
|
:path: ".symlinks/plugins/background_fetch/ios"
|
||||||
battery_info:
|
battery_info:
|
||||||
:path: ".symlinks/plugins/battery_info/ios"
|
:path: ".symlinks/plugins/battery_info/ios"
|
||||||
|
bonsoir_darwin:
|
||||||
|
:path: ".symlinks/plugins/bonsoir_darwin/darwin"
|
||||||
connectivity_plus:
|
connectivity_plus:
|
||||||
:path: ".symlinks/plugins/connectivity_plus/ios"
|
:path: ".symlinks/plugins/connectivity_plus/ios"
|
||||||
device_info_plus:
|
device_info_plus:
|
||||||
@@ -334,6 +351,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/integration_test/ios"
|
:path: ".symlinks/plugins/integration_test/ios"
|
||||||
isar_flutter_libs:
|
isar_flutter_libs:
|
||||||
:path: ".symlinks/plugins/isar_flutter_libs/ios"
|
:path: ".symlinks/plugins/isar_flutter_libs/ios"
|
||||||
|
local_auth_darwin:
|
||||||
|
:path: ".symlinks/plugins/local_auth_darwin/darwin"
|
||||||
local_auth_ios:
|
local_auth_ios:
|
||||||
:path: ".symlinks/plugins/local_auth_ios/ios"
|
:path: ".symlinks/plugins/local_auth_ios/ios"
|
||||||
media_extension:
|
media_extension:
|
||||||
@@ -388,37 +407,39 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/wakelock_plus/ios"
|
:path: ".symlinks/plugins/wakelock_plus/ios"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
background_fetch: 896944864b038d2837fc750d470e9841e1e6a363
|
background_fetch: 2319bf7e18237b4b269430b7f14d177c0df09c5a
|
||||||
battery_info: 09f5c9ee65394f2291c8c6227bedff345b8a730c
|
battery_info: 09f5c9ee65394f2291c8c6227bedff345b8a730c
|
||||||
connectivity_plus: 53efb943fc2882c8512d84c45707bcabc4c36076
|
bonsoir_darwin: 127bdc632fdc154ae2f277a4d5c86a6212bc75be
|
||||||
|
connectivity_plus: 07c49e96d7fc92bc9920617b83238c4d178b446a
|
||||||
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
|
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
|
||||||
file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808
|
file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808
|
||||||
Firebase: 414ad272f8d02dfbf12662a9d43f4bba9bec2a06
|
Firebase: 797fd7297b7e1be954432743a0b3f90038e45a71
|
||||||
firebase_core: 0af4a2b24f62071f9bf283691c0ee41556dcb3f5
|
firebase_core: aaadbddb3cb2ee3792b9804f9dbb63e5f6f7b55c
|
||||||
firebase_messaging: 90e8a6db84b6e1e876cebce4f30f01dc495e7014
|
firebase_messaging: e65050bf9b187511d80ea3a4de7cf5573d2c7543
|
||||||
FirebaseCore: 2322423314d92f946219c8791674d2f3345b598f
|
FirebaseCore: 0326ec9b05fbed8f8716cddbf0e36894a13837f7
|
||||||
FirebaseCoreInternal: 43c1788eaeee9d1b97caaa751af567ce11010d00
|
FirebaseCoreInternal: bcb5acffd4ea05e12a783ecf835f2210ce3dc6af
|
||||||
FirebaseInstallations: 390ea1d10a4d02b20c965cbfd527ee9b3b412acb
|
FirebaseInstallations: 8f581fca6478a50705d2bd2abd66d306e0f5736e
|
||||||
FirebaseMessaging: 9bc34a98d2e0237e1b121915120d4d48ddcf301e
|
FirebaseMessaging: 9f71037fd9db3376a4caa54e5a3949d1027b4b6e
|
||||||
fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545
|
fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545
|
||||||
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
|
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||||
flutter_email_sender: 02d7443217d8c41483223627972bfdc09f74276b
|
flutter_email_sender: 02d7443217d8c41483223627972bfdc09f74276b
|
||||||
flutter_image_compress: 5a5e9aee05b6553048b8df1c3bc456d0afaac433
|
flutter_image_compress: 5a5e9aee05b6553048b8df1c3bc456d0afaac433
|
||||||
flutter_inappwebview: 3d32228f1304635e7c028b0d4252937730bbc6cf
|
flutter_inappwebview: 3d32228f1304635e7c028b0d4252937730bbc6cf
|
||||||
flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743
|
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
|
||||||
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
|
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
|
||||||
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
|
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
|
||||||
flutter_sodium: c84426b4de738514b5b66cfdeb8a06634e72fe0b
|
flutter_sodium: c84426b4de738514b5b66cfdeb8a06634e72fe0b
|
||||||
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
|
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
|
||||||
GoogleDataTransport: 57c22343ab29bc686febbf7cbb13bad167c2d8fe
|
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
|
||||||
GoogleUtilities: 0759d1a57ebb953965c2dfe0ba4c82e95ccc2e34
|
GoogleUtilities: d053d902a8edaa9904e1bd00c37535385b8ed152
|
||||||
home_widget: 0434835a4c9a75704264feff6be17ea40e0f0d57
|
home_widget: 0434835a4c9a75704264feff6be17ea40e0f0d57
|
||||||
image_editor_common: d6f6644ae4a6de80481e89fe6d0a8c49e30b4b43
|
image_editor_common: d6f6644ae4a6de80481e89fe6d0a8c49e30b4b43
|
||||||
in_app_purchase_storekit: 9e9931234f0adcf71ae323f8c83785b96030edf1
|
in_app_purchase_storekit: 0e4b3c2e43ba1e1281f4f46dd71b0593ce529892
|
||||||
integration_test: 13825b8a9334a850581300559b8839134b124670
|
integration_test: 13825b8a9334a850581300559b8839134b124670
|
||||||
isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073
|
isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073
|
||||||
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
|
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
|
||||||
local_auth_ios: 1ba1475238daa33a6ffa2a29242558437be435ac
|
local_auth_darwin: c7e464000a6a89e952235699e32b329457608d98
|
||||||
|
local_auth_ios: 5046a18c018dd973247a0564496c8898dbb5adf9
|
||||||
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
||||||
media_extension: 6d30dc1431ebaa63f43c397c37917b1a0a597a4c
|
media_extension: 6d30dc1431ebaa63f43c397c37917b1a0a597a4c
|
||||||
media_kit_libs_ios_video: a5fe24bc7875ccd6378a0978c13185e1344651c1
|
media_kit_libs_ios_video: a5fe24bc7875ccd6378a0978c13185e1344651c1
|
||||||
@@ -426,7 +447,7 @@ SPEC CHECKSUMS:
|
|||||||
media_kit_video: 5da63f157170e5bf303bf85453b7ef6971218a2e
|
media_kit_video: 5da63f157170e5bf303bf85453b7ef6971218a2e
|
||||||
motionphoto: d4a432b8c8f22fb3ad966258597c0103c9c5ff16
|
motionphoto: d4a432b8c8f22fb3ad966258597c0103c9c5ff16
|
||||||
move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
|
move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
|
||||||
nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5
|
nanopb: 438bc412db1928dac798aa6fd75726007be04262
|
||||||
onnxruntime: e9346181d75b8dea8733bdae512a22c298962e00
|
onnxruntime: e9346181d75b8dea8733bdae512a22c298962e00
|
||||||
onnxruntime-c: ebdcfd8650bcbd10121c125262f99dea681b92a3
|
onnxruntime-c: ebdcfd8650bcbd10121c125262f99dea681b92a3
|
||||||
onnxruntime-objc: ae7acec7a3d03eaf072d340afed7a35635c1c2a6
|
onnxruntime-objc: ae7acec7a3d03eaf072d340afed7a35635c1c2a6
|
||||||
@@ -434,30 +455,30 @@ SPEC CHECKSUMS:
|
|||||||
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
||||||
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85
|
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85
|
||||||
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
|
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
|
||||||
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
|
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
||||||
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
|
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
|
||||||
PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
|
ReachabilitySwift: 5ae15e16814b5f9ef568963fb2c87aeb49158c66
|
||||||
receive_sharing_intent: 9ca20ae908f83c36ddaaaa8c9bd30ce4700495e8
|
receive_sharing_intent: 6837b01768e567fe8562182397bf43d63d8c6437
|
||||||
screen_brightness_ios: 715ca807df953bf676d339f11464e438143ee625
|
screen_brightness_ios: 715ca807df953bf676d339f11464e438143ee625
|
||||||
SDWebImage: a3ba0b8faac7228c3c8eadd1a55c9c9fe5e16457
|
SDWebImage: 40b0b4053e36c660a764958bff99eed16610acbb
|
||||||
SDWebImageWebPCoder: c94f09adbca681822edad9e532ac752db713eabf
|
SDWebImageWebPCoder: c94f09adbca681822edad9e532ac752db713eabf
|
||||||
Sentry: 8984a4ffb2b9bd2894d74fb36e6f5833865bc18e
|
Sentry: ebc12276bd17613a114ab359074096b6b3725203
|
||||||
sentry_flutter: c87a0556eeb6cbf7f9f924d30e878bdedf22d364
|
sentry_flutter: 88ebea3f595b0bc16acc5bedacafe6d60c12dcd5
|
||||||
SentryPrivate: 2f0c9ba4c3fc993f70eab6ca95673509561e0085
|
SentryPrivate: d651efb234cf385ec9a1cdd3eff94b5e78a0e0fe
|
||||||
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
|
share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5
|
||||||
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
|
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
|
||||||
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
||||||
sqlite3: 73b7fc691fdc43277614250e04d183740cb15078
|
sqlite3: 73b7fc691fdc43277614250e04d183740cb15078
|
||||||
sqlite3_flutter_libs: af0e8fe9bce48abddd1ffdbbf839db0302d72d80
|
sqlite3_flutter_libs: af0e8fe9bce48abddd1ffdbbf839db0302d72d80
|
||||||
Toast: ec33c32b8688982cecc6348adeae667c1b9938da
|
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
|
||||||
uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
|
uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
|
||||||
url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812
|
url_launcher_ios: 6116280ddcfe98ab8820085d8d76ae7449447586
|
||||||
video_player_avfoundation: e9e6f9cae7d7a6d9b43519b0aab382bca60fcfd1
|
video_player_avfoundation: 2b4384f3b157206b5e150a0083cdc0c905d260d3
|
||||||
video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1
|
video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1
|
||||||
volume_controller: 531ddf792994285c9b17f9d8a7e4dcdd29b3eae9
|
volume_controller: 531ddf792994285c9b17f9d8a7e4dcdd29b3eae9
|
||||||
wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47
|
wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47
|
||||||
|
|
||||||
PODFILE CHECKSUM: c1a8f198a245ed1f10e40b617efdb129b021b225
|
PODFILE CHECKSUM: c1a8f198a245ed1f10e40b617efdb129b021b225
|
||||||
|
|
||||||
COCOAPODS: 1.14.3
|
COCOAPODS: 1.15.2
|
||||||
|
@@ -174,6 +174,7 @@
|
|||||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||||
ABF2FD2FD606DC6DD54BD9AB /* [CP] Embed Pods Frameworks */,
|
ABF2FD2FD606DC6DD54BD9AB /* [CP] Embed Pods Frameworks */,
|
||||||
|
F5BF2E85B889CF8483C26F35 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -191,7 +192,7 @@
|
|||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastSwiftUpdateCheck = 1520;
|
LastSwiftUpdateCheck = 1520;
|
||||||
LastUpgradeCheck = 1430;
|
LastUpgradeCheck = 1510;
|
||||||
ORGANIZATIONNAME = "The Chromium Authors";
|
ORGANIZATIONNAME = "The Chromium Authors";
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
97C146ED1CF9000F007C117D = {
|
97C146ED1CF9000F007C117D = {
|
||||||
@@ -292,6 +293,7 @@
|
|||||||
"${BUILT_PRODUCTS_DIR}/Toast/Toast.framework",
|
"${BUILT_PRODUCTS_DIR}/Toast/Toast.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/background_fetch/background_fetch.framework",
|
"${BUILT_PRODUCTS_DIR}/background_fetch/background_fetch.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/battery_info/battery_info.framework",
|
"${BUILT_PRODUCTS_DIR}/battery_info/battery_info.framework",
|
||||||
|
"${BUILT_PRODUCTS_DIR}/bonsoir_darwin/bonsoir_darwin.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/connectivity_plus/connectivity_plus.framework",
|
"${BUILT_PRODUCTS_DIR}/connectivity_plus/connectivity_plus.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework",
|
"${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/file_saver/file_saver.framework",
|
"${BUILT_PRODUCTS_DIR}/file_saver/file_saver.framework",
|
||||||
@@ -310,6 +312,7 @@
|
|||||||
"${BUILT_PRODUCTS_DIR}/integration_test/integration_test.framework",
|
"${BUILT_PRODUCTS_DIR}/integration_test/integration_test.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/isar_flutter_libs/isar_flutter_libs.framework",
|
"${BUILT_PRODUCTS_DIR}/isar_flutter_libs/isar_flutter_libs.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/libwebp/libwebp.framework",
|
"${BUILT_PRODUCTS_DIR}/libwebp/libwebp.framework",
|
||||||
|
"${BUILT_PRODUCTS_DIR}/local_auth_darwin/local_auth_darwin.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/local_auth_ios/local_auth_ios.framework",
|
"${BUILT_PRODUCTS_DIR}/local_auth_ios/local_auth_ios.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/media_extension/media_extension.framework",
|
"${BUILT_PRODUCTS_DIR}/media_extension/media_extension.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/media_kit_libs_ios_video/media_kit_libs_ios_video.framework",
|
"${BUILT_PRODUCTS_DIR}/media_kit_libs_ios_video/media_kit_libs_ios_video.framework",
|
||||||
@@ -374,6 +377,7 @@
|
|||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/background_fetch.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/background_fetch.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/battery_info.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/battery_info.framework",
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/bonsoir_darwin.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/connectivity_plus.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/connectivity_plus.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_saver.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_saver.framework",
|
||||||
@@ -392,6 +396,7 @@
|
|||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/integration_test.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/integration_test.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/isar_flutter_libs.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/isar_flutter_libs.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libwebp.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libwebp.framework",
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/local_auth_darwin.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/local_auth_ios.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/local_auth_ios.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/media_extension.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/media_extension.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/media_kit_libs_ios_video.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/media_kit_libs_ios_video.framework",
|
||||||
@@ -464,6 +469,24 @@
|
|||||||
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";
|
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;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
|
F5BF2E85B889CF8483C26F35 /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/permission_handler_apple/permission_handler_apple_privacy.bundle",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/permission_handler_apple_privacy.bundle",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "1430"
|
LastUpgradeVersion = "1510"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
@@ -181,6 +181,7 @@ extension DeviceFiles on FilesDB {
|
|||||||
final Set<String> existingPathIds = await getDevicePathIDs();
|
final Set<String> existingPathIds = await getDevicePathIDs();
|
||||||
for (Tuple2<AssetPathEntity, String> tup in devicePathInfo) {
|
for (Tuple2<AssetPathEntity, String> tup in devicePathInfo) {
|
||||||
final AssetPathEntity pathEntity = tup.item1;
|
final AssetPathEntity pathEntity = tup.item1;
|
||||||
|
final assetCount = await pathEntity.assetCountAsync;
|
||||||
final String localID = tup.item2;
|
final String localID = tup.item2;
|
||||||
final bool shouldUpdate = existingPathIds.contains(pathEntity.id);
|
final bool shouldUpdate = existingPathIds.contains(pathEntity.id);
|
||||||
if (shouldUpdate) {
|
if (shouldUpdate) {
|
||||||
@@ -190,11 +191,11 @@ extension DeviceFiles on FilesDB {
|
|||||||
[
|
[
|
||||||
pathEntity.name,
|
pathEntity.name,
|
||||||
localID,
|
localID,
|
||||||
pathEntity.assetCount,
|
assetCount,
|
||||||
pathEntity.id,
|
pathEntity.id,
|
||||||
pathEntity.name,
|
pathEntity.name,
|
||||||
localID,
|
localID,
|
||||||
pathEntity.assetCount,
|
assetCount,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
if (rowUpdated > 0) {
|
if (rowUpdated > 0) {
|
||||||
@@ -208,7 +209,7 @@ extension DeviceFiles on FilesDB {
|
|||||||
{
|
{
|
||||||
"id": pathEntity.id,
|
"id": pathEntity.id,
|
||||||
"name": pathEntity.name,
|
"name": pathEntity.name,
|
||||||
"count": pathEntity.assetCount,
|
"count": assetCount,
|
||||||
"cover_id": localID,
|
"cover_id": localID,
|
||||||
"should_backup": shouldBackup ? _sqlBoolTrue : _sqlBoolFalse,
|
"should_backup": shouldBackup ? _sqlBoolTrue : _sqlBoolFalse,
|
||||||
},
|
},
|
||||||
|
2
mobile/lib/generated/intl/messages_zh.dart
generated
2
mobile/lib/generated/intl/messages_zh.dart
generated
@@ -1026,7 +1026,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
|||||||
"selectedFilesAreNotOnEnte":
|
"selectedFilesAreNotOnEnte":
|
||||||
MessageLookupByLibrary.simpleMessage("所选文件不在 Ente 上"),
|
MessageLookupByLibrary.simpleMessage("所选文件不在 Ente 上"),
|
||||||
"selectedFoldersWillBeEncryptedAndBackedUp":
|
"selectedFoldersWillBeEncryptedAndBackedUp":
|
||||||
MessageLookupByLibrary.simpleMessage("所选文件夹将被加密和备份"),
|
MessageLookupByLibrary.simpleMessage("所选文件夹将被加密并备份"),
|
||||||
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
|
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
|
||||||
MessageLookupByLibrary.simpleMessage("所选项目将从所有相册中删除并移动到回收站。"),
|
MessageLookupByLibrary.simpleMessage("所选项目将从所有相册中删除并移动到回收站。"),
|
||||||
"selectedPhotos": m46,
|
"selectedPhotos": m46,
|
||||||
|
@@ -12,7 +12,7 @@ part of 'location.dart';
|
|||||||
T _$identity<T>(T value) => value;
|
T _$identity<T>(T value) => value;
|
||||||
|
|
||||||
final _privateConstructorUsedError = UnsupportedError(
|
final _privateConstructorUsedError = UnsupportedError(
|
||||||
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods');
|
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
|
||||||
|
|
||||||
Location _$LocationFromJson(Map<String, dynamic> json) {
|
Location _$LocationFromJson(Map<String, dynamic> json) {
|
||||||
return _Location.fromJson(json);
|
return _Location.fromJson(json);
|
||||||
@@ -67,21 +67,22 @@ class _$LocationCopyWithImpl<$Res, $Val extends Location>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
abstract class _$$_LocationCopyWith<$Res> implements $LocationCopyWith<$Res> {
|
abstract class _$$LocationImplCopyWith<$Res>
|
||||||
factory _$$_LocationCopyWith(
|
implements $LocationCopyWith<$Res> {
|
||||||
_$_Location value, $Res Function(_$_Location) then) =
|
factory _$$LocationImplCopyWith(
|
||||||
__$$_LocationCopyWithImpl<$Res>;
|
_$LocationImpl value, $Res Function(_$LocationImpl) then) =
|
||||||
|
__$$LocationImplCopyWithImpl<$Res>;
|
||||||
@override
|
@override
|
||||||
@useResult
|
@useResult
|
||||||
$Res call({double? latitude, double? longitude});
|
$Res call({double? latitude, double? longitude});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
class __$$_LocationCopyWithImpl<$Res>
|
class __$$LocationImplCopyWithImpl<$Res>
|
||||||
extends _$LocationCopyWithImpl<$Res, _$_Location>
|
extends _$LocationCopyWithImpl<$Res, _$LocationImpl>
|
||||||
implements _$$_LocationCopyWith<$Res> {
|
implements _$$LocationImplCopyWith<$Res> {
|
||||||
__$$_LocationCopyWithImpl(
|
__$$LocationImplCopyWithImpl(
|
||||||
_$_Location _value, $Res Function(_$_Location) _then)
|
_$LocationImpl _value, $Res Function(_$LocationImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@@ -90,7 +91,7 @@ class __$$_LocationCopyWithImpl<$Res>
|
|||||||
Object? latitude = freezed,
|
Object? latitude = freezed,
|
||||||
Object? longitude = freezed,
|
Object? longitude = freezed,
|
||||||
}) {
|
}) {
|
||||||
return _then(_$_Location(
|
return _then(_$LocationImpl(
|
||||||
latitude: freezed == latitude
|
latitude: freezed == latitude
|
||||||
? _value.latitude
|
? _value.latitude
|
||||||
: latitude // ignore: cast_nullable_to_non_nullable
|
: latitude // ignore: cast_nullable_to_non_nullable
|
||||||
@@ -105,11 +106,11 @@ class __$$_LocationCopyWithImpl<$Res>
|
|||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
@JsonSerializable()
|
@JsonSerializable()
|
||||||
class _$_Location implements _Location {
|
class _$LocationImpl implements _Location {
|
||||||
const _$_Location({required this.latitude, required this.longitude});
|
const _$LocationImpl({required this.latitude, required this.longitude});
|
||||||
|
|
||||||
factory _$_Location.fromJson(Map<String, dynamic> json) =>
|
factory _$LocationImpl.fromJson(Map<String, dynamic> json) =>
|
||||||
_$$_LocationFromJson(json);
|
_$$LocationImplFromJson(json);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
final double? latitude;
|
final double? latitude;
|
||||||
@@ -122,10 +123,10 @@ class _$_Location implements _Location {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(dynamic other) {
|
bool operator ==(Object other) {
|
||||||
return identical(this, other) ||
|
return identical(this, other) ||
|
||||||
(other.runtimeType == runtimeType &&
|
(other.runtimeType == runtimeType &&
|
||||||
other is _$_Location &&
|
other is _$LocationImpl &&
|
||||||
(identical(other.latitude, latitude) ||
|
(identical(other.latitude, latitude) ||
|
||||||
other.latitude == latitude) &&
|
other.latitude == latitude) &&
|
||||||
(identical(other.longitude, longitude) ||
|
(identical(other.longitude, longitude) ||
|
||||||
@@ -139,12 +140,12 @@ class _$_Location implements _Location {
|
|||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$_LocationCopyWith<_$_Location> get copyWith =>
|
_$$LocationImplCopyWith<_$LocationImpl> get copyWith =>
|
||||||
__$$_LocationCopyWithImpl<_$_Location>(this, _$identity);
|
__$$LocationImplCopyWithImpl<_$LocationImpl>(this, _$identity);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
return _$$_LocationToJson(
|
return _$$LocationImplToJson(
|
||||||
this,
|
this,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -153,9 +154,10 @@ class _$_Location implements _Location {
|
|||||||
abstract class _Location implements Location {
|
abstract class _Location implements Location {
|
||||||
const factory _Location(
|
const factory _Location(
|
||||||
{required final double? latitude,
|
{required final double? latitude,
|
||||||
required final double? longitude}) = _$_Location;
|
required final double? longitude}) = _$LocationImpl;
|
||||||
|
|
||||||
factory _Location.fromJson(Map<String, dynamic> json) = _$_Location.fromJson;
|
factory _Location.fromJson(Map<String, dynamic> json) =
|
||||||
|
_$LocationImpl.fromJson;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
double? get latitude;
|
double? get latitude;
|
||||||
@@ -163,6 +165,6 @@ abstract class _Location implements Location {
|
|||||||
double? get longitude;
|
double? get longitude;
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
_$$_LocationCopyWith<_$_Location> get copyWith =>
|
_$$LocationImplCopyWith<_$LocationImpl> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
|
@@ -6,12 +6,13 @@ part of 'location.dart';
|
|||||||
// JsonSerializableGenerator
|
// JsonSerializableGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
_$_Location _$$_LocationFromJson(Map<String, dynamic> json) => _$_Location(
|
_$LocationImpl _$$LocationImplFromJson(Map<String, dynamic> json) =>
|
||||||
|
_$LocationImpl(
|
||||||
latitude: (json['latitude'] as num?)?.toDouble(),
|
latitude: (json['latitude'] as num?)?.toDouble(),
|
||||||
longitude: (json['longitude'] as num?)?.toDouble(),
|
longitude: (json['longitude'] as num?)?.toDouble(),
|
||||||
);
|
);
|
||||||
|
|
||||||
Map<String, dynamic> _$$_LocationToJson(_$_Location instance) =>
|
Map<String, dynamic> _$$LocationImplToJson(_$LocationImpl instance) =>
|
||||||
<String, dynamic>{
|
<String, dynamic>{
|
||||||
'latitude': instance.latitude,
|
'latitude': instance.latitude,
|
||||||
'longitude': instance.longitude,
|
'longitude': instance.longitude,
|
||||||
|
@@ -12,7 +12,7 @@ part of 'location_tag.dart';
|
|||||||
T _$identity<T>(T value) => value;
|
T _$identity<T>(T value) => value;
|
||||||
|
|
||||||
final _privateConstructorUsedError = UnsupportedError(
|
final _privateConstructorUsedError = UnsupportedError(
|
||||||
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods');
|
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
|
||||||
|
|
||||||
LocationTag _$LocationTagFromJson(Map<String, dynamic> json) {
|
LocationTag _$LocationTagFromJson(Map<String, dynamic> json) {
|
||||||
return _LocationTag.fromJson(json);
|
return _LocationTag.fromJson(json);
|
||||||
@@ -101,11 +101,11 @@ class _$LocationTagCopyWithImpl<$Res, $Val extends LocationTag>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
abstract class _$$_LocationTagCopyWith<$Res>
|
abstract class _$$LocationTagImplCopyWith<$Res>
|
||||||
implements $LocationTagCopyWith<$Res> {
|
implements $LocationTagCopyWith<$Res> {
|
||||||
factory _$$_LocationTagCopyWith(
|
factory _$$LocationTagImplCopyWith(
|
||||||
_$_LocationTag value, $Res Function(_$_LocationTag) then) =
|
_$LocationTagImpl value, $Res Function(_$LocationTagImpl) then) =
|
||||||
__$$_LocationTagCopyWithImpl<$Res>;
|
__$$LocationTagImplCopyWithImpl<$Res>;
|
||||||
@override
|
@override
|
||||||
@useResult
|
@useResult
|
||||||
$Res call(
|
$Res call(
|
||||||
@@ -120,11 +120,11 @@ abstract class _$$_LocationTagCopyWith<$Res>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
class __$$_LocationTagCopyWithImpl<$Res>
|
class __$$LocationTagImplCopyWithImpl<$Res>
|
||||||
extends _$LocationTagCopyWithImpl<$Res, _$_LocationTag>
|
extends _$LocationTagCopyWithImpl<$Res, _$LocationTagImpl>
|
||||||
implements _$$_LocationTagCopyWith<$Res> {
|
implements _$$LocationTagImplCopyWith<$Res> {
|
||||||
__$$_LocationTagCopyWithImpl(
|
__$$LocationTagImplCopyWithImpl(
|
||||||
_$_LocationTag _value, $Res Function(_$_LocationTag) _then)
|
_$LocationTagImpl _value, $Res Function(_$LocationTagImpl) _then)
|
||||||
: super(_value, _then);
|
: super(_value, _then);
|
||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@@ -136,7 +136,7 @@ class __$$_LocationTagCopyWithImpl<$Res>
|
|||||||
Object? bSquare = null,
|
Object? bSquare = null,
|
||||||
Object? centerPoint = null,
|
Object? centerPoint = null,
|
||||||
}) {
|
}) {
|
||||||
return _then(_$_LocationTag(
|
return _then(_$LocationTagImpl(
|
||||||
name: null == name
|
name: null == name
|
||||||
? _value.name
|
? _value.name
|
||||||
: name // ignore: cast_nullable_to_non_nullable
|
: name // ignore: cast_nullable_to_non_nullable
|
||||||
@@ -163,8 +163,8 @@ class __$$_LocationTagCopyWithImpl<$Res>
|
|||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
@JsonSerializable()
|
@JsonSerializable()
|
||||||
class _$_LocationTag extends _LocationTag {
|
class _$LocationTagImpl extends _LocationTag {
|
||||||
const _$_LocationTag(
|
const _$LocationTagImpl(
|
||||||
{required this.name,
|
{required this.name,
|
||||||
required this.radius,
|
required this.radius,
|
||||||
required this.aSquare,
|
required this.aSquare,
|
||||||
@@ -172,8 +172,8 @@ class _$_LocationTag extends _LocationTag {
|
|||||||
required this.centerPoint})
|
required this.centerPoint})
|
||||||
: super._();
|
: super._();
|
||||||
|
|
||||||
factory _$_LocationTag.fromJson(Map<String, dynamic> json) =>
|
factory _$LocationTagImpl.fromJson(Map<String, dynamic> json) =>
|
||||||
_$$_LocationTagFromJson(json);
|
_$$LocationTagImplFromJson(json);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
final String name;
|
final String name;
|
||||||
@@ -192,10 +192,10 @@ class _$_LocationTag extends _LocationTag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(dynamic other) {
|
bool operator ==(Object other) {
|
||||||
return identical(this, other) ||
|
return identical(this, other) ||
|
||||||
(other.runtimeType == runtimeType &&
|
(other.runtimeType == runtimeType &&
|
||||||
other is _$_LocationTag &&
|
other is _$LocationTagImpl &&
|
||||||
(identical(other.name, name) || other.name == name) &&
|
(identical(other.name, name) || other.name == name) &&
|
||||||
(identical(other.radius, radius) || other.radius == radius) &&
|
(identical(other.radius, radius) || other.radius == radius) &&
|
||||||
(identical(other.aSquare, aSquare) || other.aSquare == aSquare) &&
|
(identical(other.aSquare, aSquare) || other.aSquare == aSquare) &&
|
||||||
@@ -212,12 +212,12 @@ class _$_LocationTag extends _LocationTag {
|
|||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
_$$_LocationTagCopyWith<_$_LocationTag> get copyWith =>
|
_$$LocationTagImplCopyWith<_$LocationTagImpl> get copyWith =>
|
||||||
__$$_LocationTagCopyWithImpl<_$_LocationTag>(this, _$identity);
|
__$$LocationTagImplCopyWithImpl<_$LocationTagImpl>(this, _$identity);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
return _$$_LocationTagToJson(
|
return _$$LocationTagImplToJson(
|
||||||
this,
|
this,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -229,11 +229,11 @@ abstract class _LocationTag extends LocationTag {
|
|||||||
required final double radius,
|
required final double radius,
|
||||||
required final double aSquare,
|
required final double aSquare,
|
||||||
required final double bSquare,
|
required final double bSquare,
|
||||||
required final Location centerPoint}) = _$_LocationTag;
|
required final Location centerPoint}) = _$LocationTagImpl;
|
||||||
const _LocationTag._() : super._();
|
const _LocationTag._() : super._();
|
||||||
|
|
||||||
factory _LocationTag.fromJson(Map<String, dynamic> json) =
|
factory _LocationTag.fromJson(Map<String, dynamic> json) =
|
||||||
_$_LocationTag.fromJson;
|
_$LocationTagImpl.fromJson;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get name;
|
String get name;
|
||||||
@@ -247,6 +247,6 @@ abstract class _LocationTag extends LocationTag {
|
|||||||
Location get centerPoint;
|
Location get centerPoint;
|
||||||
@override
|
@override
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
_$$_LocationTagCopyWith<_$_LocationTag> get copyWith =>
|
_$$LocationTagImplCopyWith<_$LocationTagImpl> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
}
|
}
|
||||||
|
@@ -6,8 +6,8 @@ part of 'location_tag.dart';
|
|||||||
// JsonSerializableGenerator
|
// JsonSerializableGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
_$_LocationTag _$$_LocationTagFromJson(Map<String, dynamic> json) =>
|
_$LocationTagImpl _$$LocationTagImplFromJson(Map<String, dynamic> json) =>
|
||||||
_$_LocationTag(
|
_$LocationTagImpl(
|
||||||
name: json['name'] as String,
|
name: json['name'] as String,
|
||||||
radius: (json['radius'] as num).toDouble(),
|
radius: (json['radius'] as num).toDouble(),
|
||||||
aSquare: (json['aSquare'] as num).toDouble(),
|
aSquare: (json['aSquare'] as num).toDouble(),
|
||||||
@@ -16,7 +16,7 @@ _$_LocationTag _$$_LocationTagFromJson(Map<String, dynamic> json) =>
|
|||||||
Location.fromJson(json['centerPoint'] as Map<String, dynamic>),
|
Location.fromJson(json['centerPoint'] as Map<String, dynamic>),
|
||||||
);
|
);
|
||||||
|
|
||||||
Map<String, dynamic> _$$_LocationTagToJson(_$_LocationTag instance) =>
|
Map<String, dynamic> _$$LocationTagImplToJson(_$LocationTagImpl instance) =>
|
||||||
<String, dynamic>{
|
<String, dynamic>{
|
||||||
'name': instance.name,
|
'name': instance.name,
|
||||||
'radius': instance.radius,
|
'radius': instance.radius,
|
||||||
|
@@ -18,3 +18,4 @@ typedef VoidCallbackParamSearchResutlsStream = void Function(
|
|||||||
typedef FutureVoidCallback = Future<void> Function();
|
typedef FutureVoidCallback = Future<void> Function();
|
||||||
typedef FutureOrVoidCallback = FutureOr<void> Function();
|
typedef FutureOrVoidCallback = FutureOr<void> Function();
|
||||||
typedef FutureVoidCallbackParamStr = Future<void> Function(String);
|
typedef FutureVoidCallbackParamStr = Future<void> Function(String);
|
||||||
|
typedef FutureVoidCallbackParamBool = Future<void> Function(bool);
|
||||||
|
@@ -23,9 +23,8 @@ class NotificationService {
|
|||||||
Future<void> init(
|
Future<void> init(
|
||||||
void Function(
|
void Function(
|
||||||
NotificationResponse notificationResponse,
|
NotificationResponse notificationResponse,
|
||||||
)
|
) onNotificationTapped,
|
||||||
onNotificationTapped,
|
SharedPreferences preferences,
|
||||||
SharedPreferences preferences,
|
|
||||||
) async {
|
) async {
|
||||||
_preferences = preferences;
|
_preferences = preferences;
|
||||||
const androidSettings = AndroidInitializationSettings('notification_icon');
|
const androidSettings = AndroidInitializationSettings('notification_icon');
|
||||||
@@ -72,7 +71,7 @@ class NotificationService {
|
|||||||
result = await _notificationsPlugin
|
result = await _notificationsPlugin
|
||||||
.resolvePlatformSpecificImplementation<
|
.resolvePlatformSpecificImplementation<
|
||||||
AndroidFlutterLocalNotificationsPlugin>()
|
AndroidFlutterLocalNotificationsPlugin>()
|
||||||
?.requestPermission();
|
?.requestNotificationsPermission();
|
||||||
}
|
}
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
await _preferences.setBool(keyGrantedNotificationPermission, result);
|
await _preferences.setBool(keyGrantedNotificationPermission, result);
|
||||||
|
@@ -148,7 +148,9 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
|
|||||||
style: Theme.of(context).textTheme.titleMedium,
|
style: Theme.of(context).textTheme.titleMedium,
|
||||||
autofillHints: const [AutofillHints.email],
|
autofillHints: const [AutofillHints.email],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: _emailIsValid ? _validFieldValueColor : null,
|
fillColor: _emailIsValid
|
||||||
|
? _validFieldValueColor
|
||||||
|
: getEnteColorScheme(context).fillFaint,
|
||||||
filled: true,
|
filled: true,
|
||||||
hintText: S.of(context).email,
|
hintText: S.of(context).email,
|
||||||
contentPadding: const EdgeInsets.symmetric(
|
contentPadding: const EdgeInsets.symmetric(
|
||||||
@@ -195,8 +197,9 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
|
|||||||
enableSuggestions: true,
|
enableSuggestions: true,
|
||||||
autofillHints: const [AutofillHints.newPassword],
|
autofillHints: const [AutofillHints.newPassword],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor:
|
fillColor: _passwordIsValid
|
||||||
_passwordIsValid ? _validFieldValueColor : null,
|
? _validFieldValueColor
|
||||||
|
: getEnteColorScheme(context).fillFaint,
|
||||||
filled: true,
|
filled: true,
|
||||||
hintText: S.of(context).password,
|
hintText: S.of(context).password,
|
||||||
contentPadding: const EdgeInsets.symmetric(
|
contentPadding: const EdgeInsets.symmetric(
|
||||||
@@ -265,7 +268,7 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: _passwordsMatch && _passwordIsValid
|
fillColor: _passwordsMatch && _passwordIsValid
|
||||||
? _validFieldValueColor
|
? _validFieldValueColor
|
||||||
: null,
|
: getEnteColorScheme(context).fillFaint,
|
||||||
filled: true,
|
filled: true,
|
||||||
hintText: S.of(context).confirmPassword,
|
hintText: S.of(context).confirmPassword,
|
||||||
contentPadding: const EdgeInsets.symmetric(
|
contentPadding: const EdgeInsets.symmetric(
|
||||||
@@ -343,7 +346,7 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
|
|||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
style: Theme.of(context).textTheme.titleMedium,
|
style: Theme.of(context).textTheme.titleMedium,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: null,
|
fillColor: getEnteColorScheme(context).fillFaint,
|
||||||
filled: true,
|
filled: true,
|
||||||
contentPadding: const EdgeInsets.symmetric(
|
contentPadding: const EdgeInsets.symmetric(
|
||||||
horizontal: 16,
|
horizontal: 16,
|
||||||
@@ -375,7 +378,10 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
|
|||||||
textInputAction: TextInputAction.next,
|
textInputAction: TextInputAction.next,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Divider(thickness: 1),
|
Divider(
|
||||||
|
thickness: 1,
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
|
),
|
||||||
const SizedBox(height: 12),
|
const SizedBox(height: 12),
|
||||||
_getAgreement(),
|
_getAgreement(),
|
||||||
const SizedBox(height: 40),
|
const SizedBox(height: 40),
|
||||||
|
@@ -8,6 +8,7 @@ import "package:photos/generated/l10n.dart";
|
|||||||
import "package:photos/l10n/l10n.dart";
|
import "package:photos/l10n/l10n.dart";
|
||||||
import "package:photos/models/api/user/srp.dart";
|
import "package:photos/models/api/user/srp.dart";
|
||||||
import 'package:photos/services/user_service.dart';
|
import 'package:photos/services/user_service.dart';
|
||||||
|
import "package:photos/theme/ente_theme.dart";
|
||||||
import "package:photos/ui/account/login_pwd_verification_page.dart";
|
import "package:photos/ui/account/login_pwd_verification_page.dart";
|
||||||
import 'package:photos/ui/common/dynamic_fab.dart';
|
import 'package:photos/ui/common/dynamic_fab.dart';
|
||||||
import 'package:photos/ui/common/web_page.dart';
|
import 'package:photos/ui/common/web_page.dart';
|
||||||
@@ -28,18 +29,18 @@ class _LoginPageState extends State<LoginPage> {
|
|||||||
final Logger _logger = Logger('_LoginPageState');
|
final Logger _logger = Logger('_LoginPageState');
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void didChangeDependencies() {
|
||||||
|
super.didChangeDependencies();
|
||||||
if ((_config.getEmail() ?? '').isNotEmpty) {
|
if ((_config.getEmail() ?? '').isNotEmpty) {
|
||||||
updateEmail(_config.getEmail()!);
|
updateEmail(_config.getEmail()!);
|
||||||
} else if (kDebugMode) {
|
} else if (kDebugMode) {
|
||||||
updateEmail(const String.fromEnvironment("email"));
|
updateEmail(const String.fromEnvironment("email"));
|
||||||
}
|
}
|
||||||
super.initState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 100;
|
final isKeypadOpen = MediaQuery.viewInsetsOf(context).bottom > 100;
|
||||||
|
|
||||||
FloatingActionButtonLocation? fabLocation() {
|
FloatingActionButtonLocation? fabLocation() {
|
||||||
if (isKeypadOpen) {
|
if (isKeypadOpen) {
|
||||||
@@ -159,10 +160,11 @@ class _LoginPageState extends State<LoginPage> {
|
|||||||
autofocus: true,
|
autofocus: true,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 18),
|
padding: const EdgeInsets.symmetric(vertical: 18),
|
||||||
child: Divider(
|
child: Divider(
|
||||||
thickness: 1,
|
thickness: 1,
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
@@ -235,7 +237,7 @@ class _LoginPageState extends State<LoginPage> {
|
|||||||
if (_emailIsValid) {
|
if (_emailIsValid) {
|
||||||
_emailInputFieldColor = const Color.fromRGBO(45, 194, 98, 0.2);
|
_emailInputFieldColor = const Color.fromRGBO(45, 194, 98, 0.2);
|
||||||
} else {
|
} else {
|
||||||
_emailInputFieldColor = null;
|
_emailInputFieldColor = getEnteColorScheme(context).fillFaint;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -251,6 +251,7 @@ class _LoginPasswordVerificationPageState
|
|||||||
borderSide: BorderSide.none,
|
borderSide: BorderSide.none,
|
||||||
borderRadius: BorderRadius.circular(6),
|
borderRadius: BorderRadius.circular(6),
|
||||||
),
|
),
|
||||||
|
fillColor: getEnteColorScheme(context).fillFaint,
|
||||||
suffixIcon: _passwordInFocus
|
suffixIcon: _passwordInFocus
|
||||||
? IconButton(
|
? IconButton(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
@@ -282,10 +283,11 @@ class _LoginPasswordVerificationPageState
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 18),
|
padding: const EdgeInsets.symmetric(vertical: 18),
|
||||||
child: Divider(
|
child: Divider(
|
||||||
thickness: 1,
|
thickness: 1,
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
|
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:photos/ente_theme_data.dart';
|
import 'package:photos/ente_theme_data.dart';
|
||||||
import "package:photos/generated/l10n.dart";
|
import "package:photos/generated/l10n.dart";
|
||||||
import 'package:photos/services/user_service.dart';
|
import 'package:photos/services/user_service.dart';
|
||||||
|
import "package:photos/theme/ente_theme.dart";
|
||||||
import 'package:photos/ui/common/dynamic_fab.dart';
|
import 'package:photos/ui/common/dynamic_fab.dart';
|
||||||
import 'package:step_progress_indicator/step_progress_indicator.dart';
|
import 'package:step_progress_indicator/step_progress_indicator.dart';
|
||||||
import "package:styled_text/styled_text.dart";
|
import "package:styled_text/styled_text.dart";
|
||||||
@@ -16,7 +17,7 @@ class OTTVerificationPage extends StatefulWidget {
|
|||||||
this.email, {
|
this.email, {
|
||||||
this.isChangeEmail = false,
|
this.isChangeEmail = false,
|
||||||
this.isCreateAccountScreen = false,
|
this.isCreateAccountScreen = false,
|
||||||
this.isResetPasswordScreen = false,
|
this.isResetPasswordScreen = false,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@@ -78,9 +79,11 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
|
|||||||
_verificationCodeController.text,
|
_verificationCodeController.text,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
UserService.instance
|
UserService.instance.verifyEmail(
|
||||||
.verifyEmail(context, _verificationCodeController.text,
|
context,
|
||||||
isResettingPasswordScreen: widget.isResetPasswordScreen,);
|
_verificationCodeController.text,
|
||||||
|
isResettingPasswordScreen: widget.isResetPasswordScreen,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
FocusScope.of(context).unfocus();
|
FocusScope.of(context).unfocus();
|
||||||
},
|
},
|
||||||
@@ -130,21 +133,21 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
widget.isResetPasswordScreen ?
|
widget.isResetPasswordScreen
|
||||||
Text(
|
? Text(
|
||||||
S.of(context).toResetVerifyEmail,
|
S.of(context).toResetVerifyEmail,
|
||||||
style: Theme.of(context)
|
style: Theme.of(context)
|
||||||
.textTheme
|
.textTheme
|
||||||
.titleMedium!
|
.titleMedium!
|
||||||
.copyWith(fontSize: 14),
|
.copyWith(fontSize: 14),
|
||||||
):
|
)
|
||||||
Text(
|
: Text(
|
||||||
S.of(context).checkInboxAndSpamFolder,
|
S.of(context).checkInboxAndSpamFolder,
|
||||||
style: Theme.of(context)
|
style: Theme.of(context)
|
||||||
.textTheme
|
.textTheme
|
||||||
.titleMedium!
|
.titleMedium!
|
||||||
.copyWith(fontSize: 14),
|
.copyWith(fontSize: 14),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -168,6 +171,7 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
|
|||||||
borderSide: BorderSide.none,
|
borderSide: BorderSide.none,
|
||||||
borderRadius: BorderRadius.circular(6),
|
borderRadius: BorderRadius.circular(6),
|
||||||
),
|
),
|
||||||
|
fillColor: getEnteColorScheme(context).fillFaint,
|
||||||
),
|
),
|
||||||
controller: _verificationCodeController,
|
controller: _verificationCodeController,
|
||||||
autofocus: false,
|
autofocus: false,
|
||||||
@@ -178,8 +182,9 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Divider(
|
Divider(
|
||||||
thickness: 1,
|
thickness: 1,
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(20),
|
padding: const EdgeInsets.all(20),
|
||||||
|
@@ -12,6 +12,7 @@ import "package:photos/generated/l10n.dart";
|
|||||||
import "package:photos/l10n/l10n.dart";
|
import "package:photos/l10n/l10n.dart";
|
||||||
import "package:photos/models/key_gen_result.dart";
|
import "package:photos/models/key_gen_result.dart";
|
||||||
import 'package:photos/services/user_service.dart';
|
import 'package:photos/services/user_service.dart';
|
||||||
|
import "package:photos/theme/ente_theme.dart";
|
||||||
import 'package:photos/ui/account/recovery_key_page.dart';
|
import 'package:photos/ui/account/recovery_key_page.dart';
|
||||||
import 'package:photos/ui/common/dynamic_fab.dart';
|
import 'package:photos/ui/common/dynamic_fab.dart';
|
||||||
import 'package:photos/ui/common/web_page.dart';
|
import 'package:photos/ui/common/web_page.dart';
|
||||||
@@ -218,8 +219,9 @@ class _PasswordEntryPageState extends State<PasswordEntryPage> {
|
|||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
autofillHints: const [AutofillHints.newPassword],
|
autofillHints: const [AutofillHints.newPassword],
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor:
|
fillColor: _isPasswordValid
|
||||||
_isPasswordValid ? _validFieldValueColor : null,
|
? _validFieldValueColor
|
||||||
|
: getEnteColorScheme(context).fillFaint,
|
||||||
filled: true,
|
filled: true,
|
||||||
hintText: S.of(context).password,
|
hintText: S.of(context).password,
|
||||||
contentPadding: const EdgeInsets.all(20),
|
contentPadding: const EdgeInsets.all(20),
|
||||||
@@ -282,7 +284,9 @@ class _PasswordEntryPageState extends State<PasswordEntryPage> {
|
|||||||
autofillHints: const [AutofillHints.newPassword],
|
autofillHints: const [AutofillHints.newPassword],
|
||||||
onEditingComplete: () => TextInput.finishAutofillContext(),
|
onEditingComplete: () => TextInput.finishAutofillContext(),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
fillColor: _passwordsMatch ? _validFieldValueColor : null,
|
fillColor: _passwordsMatch
|
||||||
|
? _validFieldValueColor
|
||||||
|
: getEnteColorScheme(context).fillFaint,
|
||||||
filled: true,
|
filled: true,
|
||||||
hintText: S.of(context).confirmPassword,
|
hintText: S.of(context).confirmPassword,
|
||||||
contentPadding: const EdgeInsets.symmetric(
|
contentPadding: const EdgeInsets.symmetric(
|
||||||
|
@@ -9,6 +9,7 @@ import 'package:photos/core/event_bus.dart';
|
|||||||
import 'package:photos/events/subscription_purchased_event.dart';
|
import 'package:photos/events/subscription_purchased_event.dart';
|
||||||
import "package:photos/generated/l10n.dart";
|
import "package:photos/generated/l10n.dart";
|
||||||
import "package:photos/services/user_service.dart";
|
import "package:photos/services/user_service.dart";
|
||||||
|
import "package:photos/theme/ente_theme.dart";
|
||||||
import 'package:photos/ui/account/recovery_page.dart';
|
import 'package:photos/ui/account/recovery_page.dart';
|
||||||
import 'package:photos/ui/common/dynamic_fab.dart';
|
import 'package:photos/ui/common/dynamic_fab.dart';
|
||||||
import 'package:photos/ui/components/buttons/button_widget.dart';
|
import 'package:photos/ui/components/buttons/button_widget.dart';
|
||||||
@@ -221,6 +222,7 @@ class _PasswordReentryPageState extends State<PasswordReentryPage> {
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: S.of(context).enterYourPassword,
|
hintText: S.of(context).enterYourPassword,
|
||||||
filled: true,
|
filled: true,
|
||||||
|
fillColor: getEnteColorScheme(context).fillFaint,
|
||||||
contentPadding: const EdgeInsets.all(20),
|
contentPadding: const EdgeInsets.all(20),
|
||||||
border: UnderlineInputBorder(
|
border: UnderlineInputBorder(
|
||||||
borderSide: BorderSide.none,
|
borderSide: BorderSide.none,
|
||||||
@@ -257,10 +259,11 @@ class _PasswordReentryPageState extends State<PasswordReentryPage> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 18),
|
padding: const EdgeInsets.symmetric(vertical: 18),
|
||||||
child: Divider(
|
child: Divider(
|
||||||
thickness: 1,
|
thickness: 1,
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
|
@@ -11,7 +11,7 @@ import 'package:photos/ente_theme_data.dart';
|
|||||||
import "package:photos/generated/l10n.dart";
|
import "package:photos/generated/l10n.dart";
|
||||||
import 'package:photos/ui/common/gradient_button.dart';
|
import 'package:photos/ui/common/gradient_button.dart';
|
||||||
import 'package:photos/utils/toast_util.dart';
|
import 'package:photos/utils/toast_util.dart';
|
||||||
import 'package:share_plus/share_plus.dart';
|
import "package:share_plus/share_plus.dart";
|
||||||
import 'package:step_progress_indicator/step_progress_indicator.dart';
|
import 'package:step_progress_indicator/step_progress_indicator.dart';
|
||||||
|
|
||||||
class RecoveryKeyPage extends StatefulWidget {
|
class RecoveryKeyPage extends StatefulWidget {
|
||||||
@@ -248,7 +248,8 @@ class _RecoveryKeyPageState extends State<RecoveryKeyPage> {
|
|||||||
await _recoveryKeyFile.delete();
|
await _recoveryKeyFile.delete();
|
||||||
}
|
}
|
||||||
_recoveryKeyFile.writeAsStringSync(recoveryKey);
|
_recoveryKeyFile.writeAsStringSync(recoveryKey);
|
||||||
await Share.shareFiles([_recoveryKeyFile.path]);
|
|
||||||
|
await Share.shareXFiles([XFile(_recoveryKeyFile.path)]);
|
||||||
Future.delayed(const Duration(milliseconds: 500), () {
|
Future.delayed(const Duration(milliseconds: 500), () {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
@@ -3,6 +3,7 @@ import 'dart:ui';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:photos/core/configuration.dart';
|
import 'package:photos/core/configuration.dart';
|
||||||
import "package:photos/generated/l10n.dart";
|
import "package:photos/generated/l10n.dart";
|
||||||
|
import "package:photos/theme/ente_theme.dart";
|
||||||
import 'package:photos/ui/account/password_entry_page.dart';
|
import 'package:photos/ui/account/password_entry_page.dart';
|
||||||
import 'package:photos/ui/common/dynamic_fab.dart';
|
import 'package:photos/ui/common/dynamic_fab.dart';
|
||||||
import 'package:photos/utils/dialog_util.dart';
|
import 'package:photos/utils/dialog_util.dart';
|
||||||
@@ -102,6 +103,7 @@ class _RecoveryPageState extends State<RecoveryPage> {
|
|||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
filled: true,
|
filled: true,
|
||||||
|
fillColor: getEnteColorScheme(context).fillFaint,
|
||||||
hintText: S.of(context).enterYourRecoveryKey,
|
hintText: S.of(context).enterYourRecoveryKey,
|
||||||
contentPadding: const EdgeInsets.all(20),
|
contentPadding: const EdgeInsets.all(20),
|
||||||
border: UnderlineInputBorder(
|
border: UnderlineInputBorder(
|
||||||
@@ -123,10 +125,11 @@ class _RecoveryPageState extends State<RecoveryPage> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 18),
|
padding: const EdgeInsets.symmetric(vertical: 18),
|
||||||
child: Divider(
|
child: Divider(
|
||||||
thickness: 1,
|
thickness: 1,
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
|
@@ -174,6 +174,7 @@ class _RequestPasswordVerificationPageState
|
|||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: context.l10n.enterYourPassword,
|
hintText: context.l10n.enterYourPassword,
|
||||||
filled: true,
|
filled: true,
|
||||||
|
fillColor: getEnteColorScheme(context).fillFaint,
|
||||||
contentPadding: const EdgeInsets.all(20),
|
contentPadding: const EdgeInsets.all(20),
|
||||||
border: UnderlineInputBorder(
|
border: UnderlineInputBorder(
|
||||||
borderSide: BorderSide.none,
|
borderSide: BorderSide.none,
|
||||||
@@ -210,10 +211,11 @@ class _RequestPasswordVerificationPageState
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 18),
|
padding: const EdgeInsets.symmetric(vertical: 18),
|
||||||
child: Divider(
|
child: Divider(
|
||||||
thickness: 1,
|
thickness: 1,
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@@ -5,6 +5,7 @@ import 'package:photos/ente_theme_data.dart';
|
|||||||
import "package:photos/generated/l10n.dart";
|
import "package:photos/generated/l10n.dart";
|
||||||
import 'package:photos/models/sessions.dart';
|
import 'package:photos/models/sessions.dart';
|
||||||
import 'package:photos/services/user_service.dart';
|
import 'package:photos/services/user_service.dart';
|
||||||
|
import "package:photos/theme/ente_theme.dart";
|
||||||
import 'package:photos/ui/common/loading_widget.dart';
|
import 'package:photos/ui/common/loading_widget.dart';
|
||||||
import "package:photos/utils/date_time_util.dart";
|
import "package:photos/utils/date_time_util.dart";
|
||||||
import 'package:photos/utils/dialog_util.dart';
|
import 'package:photos/utils/dialog_util.dart';
|
||||||
@@ -106,7 +107,9 @@ class _SessionsPageState extends State<SessionsPage> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Divider(),
|
Divider(
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@ import "package:photos/generated/l10n.dart";
|
|||||||
import 'package:photos/services/local_authentication_service.dart';
|
import 'package:photos/services/local_authentication_service.dart';
|
||||||
import 'package:photos/services/user_remote_flag_service.dart';
|
import 'package:photos/services/user_remote_flag_service.dart';
|
||||||
import 'package:photos/services/user_service.dart';
|
import 'package:photos/services/user_service.dart';
|
||||||
|
import "package:photos/theme/ente_theme.dart";
|
||||||
import 'package:photos/ui/account/recovery_key_page.dart';
|
import 'package:photos/ui/account/recovery_key_page.dart';
|
||||||
import 'package:photos/ui/common/gradient_button.dart';
|
import 'package:photos/ui/common/gradient_button.dart';
|
||||||
import 'package:photos/ui/components/buttons/button_widget.dart';
|
import 'package:photos/ui/components/buttons/button_widget.dart';
|
||||||
@@ -162,6 +163,7 @@ class _VerifyRecoveryPageState extends State<VerifyRecoveryPage> {
|
|||||||
TextFormField(
|
TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
filled: true,
|
filled: true,
|
||||||
|
fillColor: getEnteColorScheme(context).fillFaint,
|
||||||
hintText: S.of(context).enterYourRecoveryKey,
|
hintText: S.of(context).enterYourRecoveryKey,
|
||||||
contentPadding: const EdgeInsets.all(20),
|
contentPadding: const EdgeInsets.all(20),
|
||||||
border: UnderlineInputBorder(
|
border: UnderlineInputBorder(
|
||||||
|
@@ -1,3 +1,6 @@
|
|||||||
|
import "dart:io";
|
||||||
|
|
||||||
|
import "package:flutter/cupertino.dart";
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:photos/ente_theme_data.dart';
|
import 'package:photos/ente_theme_data.dart';
|
||||||
import 'package:photos/models/execution_states.dart';
|
import 'package:photos/models/execution_states.dart';
|
||||||
@@ -25,8 +28,8 @@ class _ToggleSwitchWidgetState extends State<ToggleSwitchWidget> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
toggleValue = widget.value.call();
|
|
||||||
super.initState();
|
super.initState();
|
||||||
|
toggleValue = widget.value.call();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -49,54 +52,23 @@ class _ToggleSwitchWidgetState extends State<ToggleSwitchWidget> {
|
|||||||
height: 31,
|
height: 31,
|
||||||
child: FittedBox(
|
child: FittedBox(
|
||||||
fit: BoxFit.contain,
|
fit: BoxFit.contain,
|
||||||
child: Switch.adaptive(
|
child: Platform.isAndroid
|
||||||
activeColor: enteColorScheme.primary400,
|
? Switch(
|
||||||
inactiveTrackColor: enteColorScheme.fillMuted,
|
inactiveTrackColor: Colors.transparent,
|
||||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
activeTrackColor: enteColorScheme.primary500,
|
||||||
value: toggleValue ?? false,
|
activeColor: Colors.white,
|
||||||
onChanged: (negationOfToggleValue) async {
|
inactiveThumbColor: enteColorScheme.primary500,
|
||||||
setState(() {
|
trackOutlineColor: MaterialStateColor.resolveWith(
|
||||||
toggleValue = negationOfToggleValue;
|
(states) => enteColorScheme.primary500,
|
||||||
//start showing inProgress statu icons if toggle takes more than debounce time
|
|
||||||
_debouncer.run(
|
|
||||||
() => Future(
|
|
||||||
() {
|
|
||||||
setState(() {
|
|
||||||
executionState = ExecutionState.inProgress;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
);
|
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||||
});
|
value: toggleValue ?? false,
|
||||||
final Stopwatch stopwatch = Stopwatch()..start();
|
onChanged: _onChanged,
|
||||||
await widget.onChanged.call().onError(
|
)
|
||||||
(error, stackTrace) => _debouncer.cancelDebounce(),
|
: CupertinoSwitch(
|
||||||
);
|
value: toggleValue ?? false,
|
||||||
//for toggle feedback on short unsuccessful onChanged
|
onChanged: _onChanged,
|
||||||
await _feedbackOnUnsuccessfulToggle(stopwatch);
|
),
|
||||||
//debouncer gets canceled if onChanged takes less than debounce time
|
|
||||||
_debouncer.cancelDebounce();
|
|
||||||
|
|
||||||
final newValue = widget.value.call();
|
|
||||||
setState(() {
|
|
||||||
if (toggleValue == newValue) {
|
|
||||||
if (executionState == ExecutionState.inProgress) {
|
|
||||||
executionState = ExecutionState.successful;
|
|
||||||
Future.delayed(const Duration(seconds: 2), () {
|
|
||||||
if (mounted) {
|
|
||||||
setState(() {
|
|
||||||
executionState = ExecutionState.idle;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
toggleValue = !toggleValue!;
|
|
||||||
executionState = ExecutionState.idle;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -132,4 +104,47 @@ class _ToggleSwitchWidgetState extends State<ToggleSwitchWidget> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> _onChanged(bool negationOfToggleValue) async {
|
||||||
|
setState(() {
|
||||||
|
toggleValue = negationOfToggleValue;
|
||||||
|
//start showing inProgress statu icons if toggle takes more than debounce time
|
||||||
|
_debouncer.run(
|
||||||
|
() => Future(
|
||||||
|
() {
|
||||||
|
setState(() {
|
||||||
|
executionState = ExecutionState.inProgress;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
final Stopwatch stopwatch = Stopwatch()..start();
|
||||||
|
await widget.onChanged.call().onError(
|
||||||
|
(error, stackTrace) => _debouncer.cancelDebounce(),
|
||||||
|
);
|
||||||
|
//for toggle feedback on short unsuccessful onChanged
|
||||||
|
await _feedbackOnUnsuccessfulToggle(stopwatch);
|
||||||
|
//debouncer gets canceled if onChanged takes less than debounce time
|
||||||
|
_debouncer.cancelDebounce();
|
||||||
|
|
||||||
|
final newValue = widget.value.call();
|
||||||
|
setState(() {
|
||||||
|
if (toggleValue == newValue) {
|
||||||
|
if (executionState == ExecutionState.inProgress) {
|
||||||
|
executionState = ExecutionState.successful;
|
||||||
|
Future.delayed(const Duration(seconds: 2), () {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
executionState = ExecutionState.idle;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
toggleValue = !toggleValue!;
|
||||||
|
executionState = ExecutionState.idle;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,7 @@ import 'package:photos/events/sync_status_update_event.dart';
|
|||||||
import "package:photos/generated/l10n.dart";
|
import "package:photos/generated/l10n.dart";
|
||||||
import 'package:photos/services/sync_service.dart';
|
import 'package:photos/services/sync_service.dart';
|
||||||
import 'package:photos/services/user_remote_flag_service.dart';
|
import 'package:photos/services/user_remote_flag_service.dart';
|
||||||
|
import "package:photos/theme/ente_theme.dart";
|
||||||
import 'package:photos/theme/text_style.dart';
|
import 'package:photos/theme/text_style.dart';
|
||||||
import 'package:photos/ui/account/verify_recovery_page.dart';
|
import 'package:photos/ui/account/verify_recovery_page.dart';
|
||||||
import 'package:photos/ui/components/home_header_widget.dart';
|
import 'package:photos/ui/components/home_header_widget.dart';
|
||||||
@@ -93,8 +94,9 @@ class _StatusBarWidgetState extends State<StatusBarWidget> {
|
|||||||
: const Text("ente", style: brandStyleMedium),
|
: const Text("ente", style: brandStyleMedium),
|
||||||
),
|
),
|
||||||
_showErrorBanner
|
_showErrorBanner
|
||||||
? const Divider(
|
? Divider(
|
||||||
height: 8,
|
height: 8,
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
)
|
)
|
||||||
: const SizedBox.shrink(),
|
: const SizedBox.shrink(),
|
||||||
_showErrorBanner
|
_showErrorBanner
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
|
import "package:flutter/cupertino.dart";
|
||||||
import "package:flutter/foundation.dart";
|
import "package:flutter/foundation.dart";
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:in_app_purchase/in_app_purchase.dart';
|
import 'package:in_app_purchase/in_app_purchase.dart';
|
||||||
@@ -385,43 +386,49 @@ class _StoreSubscriptionPageState extends State<StoreSubscriptionPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _showSubscriptionToggle() {
|
Widget _showSubscriptionToggle() {
|
||||||
Widget planText(String title, bool reduceOpacity) {
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.only(left: 4, right: 4),
|
|
||||||
child: Text(
|
|
||||||
title,
|
|
||||||
style: TextStyle(
|
|
||||||
color: Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.onSurface
|
|
||||||
.withOpacity(reduceOpacity ? 0.5 : 1.0),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
padding: const EdgeInsets.only(left: 8, right: 8, top: 2, bottom: 2),
|
padding: const EdgeInsets.only(left: 8, right: 8, top: 2, bottom: 2),
|
||||||
margin: const EdgeInsets.only(bottom: 6),
|
margin: const EdgeInsets.only(bottom: 6),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
RepaintBoundary(
|
RepaintBoundary(
|
||||||
child: Row(
|
child: SizedBox(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
width: 250,
|
||||||
children: [
|
child: Row(
|
||||||
planText(S.of(context).monthly, showYearlyPlan),
|
mainAxisSize: MainAxisSize.max,
|
||||||
Switch(
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
value: showYearlyPlan,
|
children: [
|
||||||
activeColor: Colors.white,
|
Expanded(
|
||||||
inactiveThumbColor: Colors.white,
|
child: SegmentedButton(
|
||||||
activeTrackColor: getEnteColorScheme(context).strokeMuted,
|
style: SegmentedButton.styleFrom(
|
||||||
onChanged: (value) async {
|
selectedBackgroundColor:
|
||||||
showYearlyPlan = value;
|
getEnteColorScheme(context).fillMuted,
|
||||||
await _filterStorePlansForUi();
|
selectedForegroundColor:
|
||||||
},
|
getEnteColorScheme(context).textBase,
|
||||||
),
|
side: BorderSide(
|
||||||
planText(S.of(context).yearly, !showYearlyPlan),
|
color: getEnteColorScheme(context).strokeMuted,
|
||||||
],
|
width: 1,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
segments: <ButtonSegment<bool>>[
|
||||||
|
ButtonSegment(
|
||||||
|
label: Text(S.of(context).monthly),
|
||||||
|
value: false,
|
||||||
|
),
|
||||||
|
ButtonSegment(
|
||||||
|
label: Text(S.of(context).yearly),
|
||||||
|
value: true,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
selected: {showYearlyPlan},
|
||||||
|
onSelectionChanged: (p0) {
|
||||||
|
showYearlyPlan = p0.first;
|
||||||
|
_filterStorePlansForUi();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
_isFreePlanUser() && !UpdateService.instance.isPlayStoreFlavor()
|
_isFreePlanUser() && !UpdateService.instance.isPlayStoreFlavor()
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
|
import "package:flutter/cupertino.dart";
|
||||||
import "package:flutter/foundation.dart";
|
import "package:flutter/foundation.dart";
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import "package:logging/logging.dart";
|
import "package:logging/logging.dart";
|
||||||
@@ -537,43 +538,49 @@ class _StripeSubscriptionPageState extends State<StripeSubscriptionPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _showSubscriptionToggle() {
|
Widget _showSubscriptionToggle() {
|
||||||
Widget planText(String title, bool reduceOpacity) {
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.only(left: 4, right: 4),
|
|
||||||
child: Text(
|
|
||||||
title,
|
|
||||||
style: TextStyle(
|
|
||||||
color: Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.onSurface
|
|
||||||
.withOpacity(reduceOpacity ? 0.5 : 1.0),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
padding: const EdgeInsets.only(left: 8, right: 8, top: 2, bottom: 2),
|
padding: const EdgeInsets.only(left: 8, right: 8, top: 2, bottom: 2),
|
||||||
margin: const EdgeInsets.only(bottom: 6),
|
margin: const EdgeInsets.only(bottom: 6),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
RepaintBoundary(
|
RepaintBoundary(
|
||||||
child: Row(
|
child: SizedBox(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
width: 250,
|
||||||
children: [
|
child: Row(
|
||||||
planText(S.of(context).monthly, _showYearlyPlan),
|
mainAxisSize: MainAxisSize.max,
|
||||||
Switch(
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
value: _showYearlyPlan,
|
children: [
|
||||||
activeColor: Colors.white,
|
Expanded(
|
||||||
inactiveThumbColor: Colors.white,
|
child: SegmentedButton(
|
||||||
activeTrackColor: getEnteColorScheme(context).strokeMuted,
|
style: SegmentedButton.styleFrom(
|
||||||
onChanged: (value) async {
|
selectedBackgroundColor:
|
||||||
_showYearlyPlan = value;
|
getEnteColorScheme(context).fillMuted,
|
||||||
await _filterStripeForUI();
|
selectedForegroundColor:
|
||||||
},
|
getEnteColorScheme(context).textBase,
|
||||||
),
|
side: BorderSide(
|
||||||
planText(S.of(context).yearly, !_showYearlyPlan),
|
color: getEnteColorScheme(context).strokeMuted,
|
||||||
],
|
width: 1,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
segments: <ButtonSegment<bool>>[
|
||||||
|
ButtonSegment(
|
||||||
|
label: Text(S.of(context).monthly),
|
||||||
|
value: false,
|
||||||
|
),
|
||||||
|
ButtonSegment(
|
||||||
|
label: Text(S.of(context).yearly),
|
||||||
|
value: true,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
selected: {_showYearlyPlan},
|
||||||
|
onSelectionChanged: (p0) {
|
||||||
|
_showYearlyPlan = p0.first;
|
||||||
|
_filterStripeForUI();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
_isFreePlanUser() && !UpdateService.instance.isPlayStoreFlavor()
|
_isFreePlanUser() && !UpdateService.instance.isPlayStoreFlavor()
|
||||||
|
@@ -15,6 +15,7 @@ import 'package:photos/ui/components/captioned_text_widget.dart';
|
|||||||
import 'package:photos/ui/components/divider_widget.dart';
|
import 'package:photos/ui/components/divider_widget.dart';
|
||||||
import 'package:photos/ui/components/menu_item_widget/menu_item_widget.dart';
|
import 'package:photos/ui/components/menu_item_widget/menu_item_widget.dart';
|
||||||
import 'package:photos/ui/components/menu_section_description_widget.dart';
|
import 'package:photos/ui/components/menu_section_description_widget.dart';
|
||||||
|
import "package:photos/ui/components/toggle_switch_widget.dart";
|
||||||
import 'package:photos/ui/sharing/pickers/device_limit_picker_page.dart';
|
import 'package:photos/ui/sharing/pickers/device_limit_picker_page.dart';
|
||||||
import 'package:photos/ui/sharing/pickers/link_expiry_picker_page.dart';
|
import 'package:photos/ui/sharing/pickers/link_expiry_picker_page.dart';
|
||||||
import 'package:photos/utils/crypto_util.dart';
|
import 'package:photos/utils/crypto_util.dart';
|
||||||
@@ -78,14 +79,12 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
|
|||||||
),
|
),
|
||||||
alignCaptionedTextToLeft: true,
|
alignCaptionedTextToLeft: true,
|
||||||
menuItemColor: getEnteColorScheme(context).fillFaint,
|
menuItemColor: getEnteColorScheme(context).fillFaint,
|
||||||
trailingWidget: Switch.adaptive(
|
trailingWidget: ToggleSwitchWidget(
|
||||||
value: widget.collection!.publicURLs?.firstOrNull
|
value: () => isCollectEnabled,
|
||||||
?.enableCollect ??
|
onChanged: () async {
|
||||||
false,
|
|
||||||
onChanged: (value) async {
|
|
||||||
await _updateUrlSettings(
|
await _updateUrlSettings(
|
||||||
context,
|
context,
|
||||||
{'enableCollect': value},
|
{'enableCollect': !isCollectEnabled},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@@ -168,14 +167,14 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
|
|||||||
isBottomBorderRadiusRemoved: true,
|
isBottomBorderRadiusRemoved: true,
|
||||||
isTopBorderRadiusRemoved: true,
|
isTopBorderRadiusRemoved: true,
|
||||||
menuItemColor: getEnteColorScheme(context).fillFaint,
|
menuItemColor: getEnteColorScheme(context).fillFaint,
|
||||||
trailingWidget: Switch.adaptive(
|
trailingWidget: ToggleSwitchWidget(
|
||||||
value: isDownloadEnabled,
|
value: () => isDownloadEnabled,
|
||||||
onChanged: (value) async {
|
onChanged: () async {
|
||||||
await _updateUrlSettings(
|
await _updateUrlSettings(
|
||||||
context,
|
context,
|
||||||
{'enableDownload': value},
|
{'enableDownload': !isDownloadEnabled},
|
||||||
);
|
);
|
||||||
if (!value) {
|
if (!isDownloadEnabled) {
|
||||||
// ignore: unawaited_futures
|
// ignore: unawaited_futures
|
||||||
showErrorDialog(
|
showErrorDialog(
|
||||||
context,
|
context,
|
||||||
@@ -198,10 +197,10 @@ class _ManageSharedLinkWidgetState extends State<ManageSharedLinkWidget> {
|
|||||||
alignCaptionedTextToLeft: true,
|
alignCaptionedTextToLeft: true,
|
||||||
isTopBorderRadiusRemoved: true,
|
isTopBorderRadiusRemoved: true,
|
||||||
menuItemColor: getEnteColorScheme(context).fillFaint,
|
menuItemColor: getEnteColorScheme(context).fillFaint,
|
||||||
trailingWidget: Switch.adaptive(
|
trailingWidget: ToggleSwitchWidget(
|
||||||
value: isPasswordEnabled,
|
value: () => isPasswordEnabled,
|
||||||
onChanged: (enablePassword) async {
|
onChanged: () async {
|
||||||
if (enablePassword) {
|
if (!isPasswordEnabled) {
|
||||||
// ignore: unawaited_futures
|
// ignore: unawaited_futures
|
||||||
showTextInputDialog(
|
showTextInputDialog(
|
||||||
context,
|
context,
|
||||||
|
@@ -284,7 +284,7 @@ class _HomeWidgetState extends State<HomeWidget> {
|
|||||||
void _initMediaShareSubscription() {
|
void _initMediaShareSubscription() {
|
||||||
// For sharing images coming from outside the app while the app is in the memory
|
// For sharing images coming from outside the app while the app is in the memory
|
||||||
_intentDataStreamSubscription =
|
_intentDataStreamSubscription =
|
||||||
ReceiveSharingIntent.getMediaStream().listen(
|
ReceiveSharingIntent.instance.getMediaStream().listen(
|
||||||
(List<SharedMediaFile> value) {
|
(List<SharedMediaFile> value) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_shouldRenderCreateCollectionSheet = true;
|
_shouldRenderCreateCollectionSheet = true;
|
||||||
@@ -296,7 +296,9 @@ class _HomeWidgetState extends State<HomeWidget> {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
// For sharing images coming from outside the app while the app is closed
|
// For sharing images coming from outside the app while the app is closed
|
||||||
ReceiveSharingIntent.getInitialMedia().then((List<SharedMediaFile> value) {
|
ReceiveSharingIntent.instance
|
||||||
|
.getInitialMedia()
|
||||||
|
.then((List<SharedMediaFile> value) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_sharedFiles = value;
|
_sharedFiles = value;
|
||||||
@@ -380,7 +382,7 @@ class _HomeWidgetState extends State<HomeWidget> {
|
|||||||
//So to stop showing multiple CreateCollectionSheets, this flag
|
//So to stop showing multiple CreateCollectionSheets, this flag
|
||||||
//needs to be set to false the first time it is rendered.
|
//needs to be set to false the first time it is rendered.
|
||||||
_shouldRenderCreateCollectionSheet = false;
|
_shouldRenderCreateCollectionSheet = false;
|
||||||
ReceiveSharingIntent.reset();
|
ReceiveSharingIntent.instance.reset();
|
||||||
Future.delayed(const Duration(milliseconds: 10), () {
|
Future.delayed(const Duration(milliseconds: 10), () {
|
||||||
showCollectionActionSheet(
|
showCollectionActionSheet(
|
||||||
context,
|
context,
|
||||||
|
@@ -10,6 +10,7 @@ import 'package:photos/events/user_logged_out_event.dart';
|
|||||||
import "package:photos/generated/l10n.dart";
|
import "package:photos/generated/l10n.dart";
|
||||||
import 'package:photos/models/collection/collection.dart';
|
import 'package:photos/models/collection/collection.dart';
|
||||||
import 'package:photos/services/collections_service.dart';
|
import 'package:photos/services/collections_service.dart';
|
||||||
|
import "package:photos/theme/ente_theme.dart";
|
||||||
import "package:photos/ui/collections/button/archived_button.dart";
|
import "package:photos/ui/collections/button/archived_button.dart";
|
||||||
import "package:photos/ui/collections/button/hidden_button.dart";
|
import "package:photos/ui/collections/button/hidden_button.dart";
|
||||||
import "package:photos/ui/collections/button/trash_button.dart";
|
import "package:photos/ui/collections/button/trash_button.dart";
|
||||||
@@ -184,7 +185,11 @@ class _UserCollectionsTabState extends State<UserCollectionsTab>
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
: const SliverToBoxAdapter(child: SizedBox.shrink()),
|
: const SliverToBoxAdapter(child: SizedBox.shrink()),
|
||||||
const SliverToBoxAdapter(child: Divider()),
|
SliverToBoxAdapter(
|
||||||
|
child: Divider(
|
||||||
|
color: getEnteColorScheme(context).strokeFaint,
|
||||||
|
),
|
||||||
|
),
|
||||||
const SliverToBoxAdapter(child: SizedBox(height: 12)),
|
const SliverToBoxAdapter(child: SizedBox(height: 12)),
|
||||||
SliverToBoxAdapter(
|
SliverToBoxAdapter(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
|
@@ -142,6 +142,7 @@ class SearchWidgetState extends State<SearchWidget> {
|
|||||||
//TODO: Extract string
|
//TODO: Extract string
|
||||||
hintText: "Search",
|
hintText: "Search",
|
||||||
filled: true,
|
filled: true,
|
||||||
|
fillColor: getEnteColorScheme(context).fillFaint,
|
||||||
border: const UnderlineInputBorder(
|
border: const UnderlineInputBorder(
|
||||||
borderSide: BorderSide.none,
|
borderSide: BorderSide.none,
|
||||||
),
|
),
|
||||||
|
@@ -291,7 +291,6 @@ ProgressDialog createProgressDialog(
|
|||||||
context,
|
context,
|
||||||
type: ProgressDialogType.normal,
|
type: ProgressDialogType.normal,
|
||||||
isDismissible: isDismissible,
|
isDismissible: isDismissible,
|
||||||
barrierColor: Colors.black12,
|
|
||||||
);
|
);
|
||||||
dialog.style(
|
dialog.style(
|
||||||
message: message,
|
message: message,
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -12,7 +12,7 @@ description: ente photos application
|
|||||||
# Read more about iOS versioning at
|
# Read more about iOS versioning at
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
|
|
||||||
version: 0.8.79+599
|
version: 0.8.80+600
|
||||||
publish_to: none
|
publish_to: none
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
@@ -27,6 +27,7 @@ dependencies:
|
|||||||
battery_info: ^1.1.1
|
battery_info: ^1.1.1
|
||||||
bip39: ^1.0.6
|
bip39: ^1.0.6
|
||||||
cached_network_image: ^3.0.0
|
cached_network_image: ^3.0.0
|
||||||
|
cast: ^2.0.0
|
||||||
chewie:
|
chewie:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/ente-io/chewie.git
|
url: https://github.com/ente-io/chewie.git
|
||||||
@@ -59,7 +60,6 @@ dependencies:
|
|||||||
extended_image: ^8.1.1
|
extended_image: ^8.1.1
|
||||||
fade_indexed_stack: ^0.2.2
|
fade_indexed_stack: ^0.2.2
|
||||||
fast_base58: ^0.2.1
|
fast_base58: ^0.2.1
|
||||||
|
|
||||||
figma_squircle: ^0.5.3
|
figma_squircle: ^0.5.3
|
||||||
file_saver:
|
file_saver:
|
||||||
# Use forked version till this PR is merged: https://github.com/incrediblezayed/file_saver/pull/87
|
# Use forked version till this PR is merged: https://github.com/incrediblezayed/file_saver/pull/87
|
||||||
@@ -78,7 +78,7 @@ dependencies:
|
|||||||
flutter_image_compress: ^1.1.0
|
flutter_image_compress: ^1.1.0
|
||||||
flutter_inappwebview: ^5.8.0
|
flutter_inappwebview: ^5.8.0
|
||||||
flutter_launcher_icons: ^0.13.1
|
flutter_launcher_icons: ^0.13.1
|
||||||
flutter_local_notifications: ^12.0.4
|
flutter_local_notifications: ^17.0.0
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
flutter_map: ^5.0.0
|
flutter_map: ^5.0.0
|
||||||
@@ -89,7 +89,7 @@ dependencies:
|
|||||||
flutter_sodium: ^0.2.0
|
flutter_sodium: ^0.2.0
|
||||||
flutter_staggered_grid_view: ^0.6.2
|
flutter_staggered_grid_view: ^0.6.2
|
||||||
fluttertoast: ^8.0.6
|
fluttertoast: ^8.0.6
|
||||||
freezed_annotation: ^2.2.0
|
freezed_annotation: ^2.4.1
|
||||||
google_nav_bar: ^5.0.5
|
google_nav_bar: ^5.0.5
|
||||||
home_widget: ^0.5.0
|
home_widget: ^0.5.0
|
||||||
html_unescape: ^2.0.0
|
html_unescape: ^2.0.0
|
||||||
@@ -131,23 +131,23 @@ dependencies:
|
|||||||
path_provider: ^2.1.1
|
path_provider: ^2.1.1
|
||||||
pedantic: ^1.9.2
|
pedantic: ^1.9.2
|
||||||
permission_handler: ^11.0.1
|
permission_handler: ^11.0.1
|
||||||
photo_manager: ^2.8.1
|
photo_manager: ^3.0.0
|
||||||
photo_view: ^0.14.0
|
photo_view: ^0.14.0
|
||||||
pinput: ^1.2.2
|
pinput: ^1.2.2
|
||||||
pointycastle: ^3.7.3
|
pointycastle: ^3.7.3
|
||||||
provider: ^6.0.0
|
provider: ^6.0.0
|
||||||
quiver: ^3.0.1
|
quiver: ^3.0.1
|
||||||
receive_sharing_intent: ^1.6.7
|
receive_sharing_intent: ^1.7.0
|
||||||
scrollable_positioned_list: ^0.3.5
|
scrollable_positioned_list: ^0.3.5
|
||||||
sentry: ^7.9.0
|
sentry: ^7.9.0
|
||||||
sentry_flutter: ^7.9.0
|
sentry_flutter: ^7.9.0
|
||||||
share_plus: ^4.0.10
|
share_plus: 7.2.2
|
||||||
shared_preferences: ^2.0.5
|
shared_preferences: ^2.0.5
|
||||||
sqflite: ^2.3.0
|
sqflite: ^2.3.0
|
||||||
sqflite_migration: ^0.3.0
|
sqflite_migration: ^0.3.0
|
||||||
sqlite3: ^2.1.0
|
sqlite3: ^2.1.0
|
||||||
sqlite3_flutter_libs: ^0.5.20
|
sqlite3_flutter_libs: ^0.5.20
|
||||||
sqlite_async: ^0.5.2
|
sqlite_async: ^0.6.1
|
||||||
step_progress_indicator: ^1.0.2
|
step_progress_indicator: ^1.0.2
|
||||||
styled_text: ^7.0.0
|
styled_text: ^7.0.0
|
||||||
syncfusion_flutter_core: ^19.2.49
|
syncfusion_flutter_core: ^19.2.49
|
||||||
@@ -174,10 +174,10 @@ dependencies:
|
|||||||
widgets_to_image: ^0.0.2
|
widgets_to_image: ^0.0.2
|
||||||
|
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
# current fork of tfite_flutter_helper depends on ffi: ^1.x.x
|
connectivity_plus: ^4.0.0
|
||||||
# but we need ffi: ^2.0.1 for newer packages. The original tfite_flutter_helper
|
# Remove this after removing dependency from flutter_sodium.
|
||||||
#
|
# Newer flutter packages depends on ffi > 2.0.0 while flutter_sodium depends on ffi < 2.0.0
|
||||||
ffi: ^2.1.0
|
ffi: 2.1.0
|
||||||
video_player:
|
video_player:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/ente-io/packages.git
|
url: https://github.com/ente-io/packages.git
|
||||||
@@ -193,7 +193,7 @@ dev_dependencies:
|
|||||||
flutter_lints: ^2.0.1
|
flutter_lints: ^2.0.1
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
freezed: ^2.3.2
|
freezed: ^2.5.2
|
||||||
integration_test:
|
integration_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
isar_generator: ^3.1.0+1
|
isar_generator: ^3.1.0+1
|
||||||
|
Reference in New Issue
Block a user