TF-3586: Upgrade Flutter to 3.27.4

This commit is contained in:
DatDang
2025-03-25 15:53:01 +07:00
committed by Dat H. Pham
parent c7f5dc9e5e
commit 4fd0931c9e
109 changed files with 361 additions and 372 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ jobs:
- name: Setup flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.24.5"
flutter-version: "3.27.4"
channel: "stable"
cache: true
cache-key: "deps-${{ hashFiles('**/pubspec.lock') }}"
+1 -1
View File
@@ -6,7 +6,7 @@ on:
name: Build dev binaries
env:
FLUTTER_VERSION: 3.24.5
FLUTTER_VERSION: 3.27.4
XCODE_VERSION: 16.0
jobs:
+1 -1
View File
@@ -23,7 +23,7 @@ jobs:
- name: Setup flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.24.5"
flutter-version: "3.27.4"
channel: "stable"
cache: true
cache-key: deps-${{ hashFiles('**/pubspec.lock') }} # optional, change this to force refresh cache
@@ -7,7 +7,7 @@ on:
env:
JAVA_VERSION: 17
FLUTTER_VERSION: 3.24.5
FLUTTER_VERSION: 3.27.4
jobs:
mobile_integration_test:
+1 -1
View File
@@ -6,7 +6,7 @@ on:
name: Release
env:
FLUTTER_VERSION: 3.24.5
FLUTTER_VERSION: 3.27.4
XCODE_VERSION: 16.0
jobs:
+1 -1
View File
@@ -1,4 +1,4 @@
ARG FLUTTER_VERSION=3.24.5
ARG FLUTTER_VERSION=3.27.4
# Stage 1 - Install dependencies and build the app
# This matches the flutter version on our CI/CD pipeline on Github
FROM --platform=amd64 ghcr.io/cirruslabs/flutter:${FLUTTER_VERSION} AS build-env
+17 -17
View File
@@ -173,10 +173,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.19.0"
convert:
dependency: transitive
description:
@@ -708,18 +708,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
@@ -1052,7 +1052,7 @@ packages:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
version: "0.0.0"
source_gen:
dependency: transitive
description:
@@ -1081,10 +1081,10 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
version: "1.12.0"
stream_channel:
dependency: transitive
description:
@@ -1105,10 +1105,10 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.0"
term_glyph:
dependency: transitive
description:
@@ -1121,10 +1121,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
version: "0.7.3"
timing:
dependency: transitive
description:
@@ -1265,10 +1265,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.2.5"
version: "14.3.0"
watcher:
dependency: transitive
description:
@@ -1297,10 +1297,10 @@ packages:
dependency: transitive
description:
name: win32
sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
sha256: "8b338d4486ab3fbc0ba0db9f9b4f5239b6697fcee427939a40e720cbb9ee0a69"
url: "https://pub.dev"
source: hosted
version: "5.5.1"
version: "5.9.0"
win32_registry:
dependency: transitive
description:
@@ -284,7 +284,15 @@ extension AppColor on Color {
[Color(0xFF87A6F8), Color(0xFF645FF6)],
];
String toHexTriplet() => '#${(value & 0xFFFFFF)
int toInt() {
final alpha = (a * 255).toInt();
final red = (r * 255).toInt();
final green = (g * 255).toInt();
final blue = (b * 255).toInt();
return (alpha << 24) | (red << 16) | (green << 8) | blue;
}
String toHexTriplet() => '#${(toInt() & 0xFFFFFF)
.toRadixString(16)
.padLeft(6, '0')
.toUpperCase()}';
+3 -3
View File
@@ -12,7 +12,7 @@ class ThemeUtils {
fontFamily: ConstantsUI.fontApp,
appBarTheme: _appBarTheme,
textTheme: _textTheme,
hoverColor: Theme.of(context).colorScheme.outline.withOpacity(0.08),
hoverColor: Theme.of(context).colorScheme.outline.withValues(alpha: 0.08),
textSelectionTheme: _textSelectionTheme,
dividerTheme: _dividerTheme,
visualDensity: VisualDensity.adaptivePlatformDensity,
@@ -281,7 +281,7 @@ class ThemeUtils {
letterSpacing: 0.25,
fontSize: 14,
height: 20 / 14,
color: AppColor.textSecondary.withOpacity(0.48),
color: AppColor.textSecondary.withValues(alpha: 0.48),
);
static const TextStyle textStyleM3BodyLarge = TextStyle(
@@ -317,7 +317,7 @@ class ThemeUtils {
letterSpacing: 0.0,
fontSize: 24,
height: 28.01 / 24,
color: AppColor.gray424244.withOpacity(0.9),
color: AppColor.gray424244.withValues(alpha: 0.9),
);
static const TextStyle defaultTextStyleInterFont = TextStyle(
@@ -88,7 +88,7 @@ class ColorPickerDialogBuilder {
colorCodeHasColor: true,
shouldUpdate: _shouldUpdate,
onColorChanged: (Color color) {
if (AppColor.listColorsPicker.any((element) => element.value == color.value)) {
if (AppColor.listColorsPicker.any((element) => element.toInt() == color.toInt())) {
_shouldUpdate = true;
_currentColor.value = color;
} else {
@@ -31,7 +31,7 @@ class ConfirmDialogButton extends StatelessWidget {
return TextButton(
style: TextButton.styleFrom(
backgroundColor: backgroundColor,
overlayColor: Theme.of(context).colorScheme.outline.withOpacity(0.08),
overlayColor: Theme.of(context).colorScheme.outline.withValues(alpha: 0.08),
shape: outlineBorder,
padding: const EdgeInsets.symmetric(horizontal: 10),
),
+17 -17
View File
@@ -173,10 +173,10 @@ packages:
dependency: "direct main"
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.19.0"
convert:
dependency: transitive
description:
@@ -676,18 +676,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
@@ -1005,7 +1005,7 @@ packages:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
version: "0.0.0"
source_gen:
dependency: transitive
description:
@@ -1026,10 +1026,10 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
version: "1.12.0"
stream_channel:
dependency: transitive
description:
@@ -1050,10 +1050,10 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.0"
term_glyph:
dependency: transitive
description:
@@ -1066,10 +1066,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
version: "0.7.3"
timing:
dependency: transitive
description:
@@ -1202,10 +1202,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.2.5"
version: "14.3.0"
watcher:
dependency: transitive
description:
@@ -1234,10 +1234,10 @@ packages:
dependency: "direct main"
description:
name: win32
sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
sha256: "8b338d4486ab3fbc0ba0db9f9b4f5239b6697fcee427939a40e720cbb9ee0a69"
url: "https://pub.dev"
source: hosted
version: "5.5.1"
version: "5.9.0"
win32_registry:
dependency: transitive
description:
+2 -2
View File
@@ -75,7 +75,7 @@ dependencies:
path_provider: 2.1.5
collection: 1.18.0
collection: 1.19.0
intl: 0.19.0
@@ -93,7 +93,7 @@ dependencies:
debounce_throttle: 2.0.0
win32: 5.5.1
win32: 5.9.0
pull_to_refresh: 2.0.0
+15 -15
View File
@@ -45,10 +45,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.19.0"
equatable:
dependency: transitive
description:
@@ -140,18 +140,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
@@ -245,7 +245,7 @@ packages:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
version: "0.0.0"
source_span:
dependency: transitive
description:
@@ -258,10 +258,10 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
version: "1.12.0"
stream_channel:
dependency: transitive
description:
@@ -274,10 +274,10 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.0"
term_glyph:
dependency: transitive
description:
@@ -290,10 +290,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
version: "0.7.3"
vector_math:
dependency: transitive
description:
@@ -306,10 +306,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.2.5"
version: "14.3.0"
sdks:
dart: ">=3.5.4 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
+15 -15
View File
@@ -141,10 +141,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.19.0"
convert:
dependency: transitive
description:
@@ -328,18 +328,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
@@ -472,7 +472,7 @@ packages:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
version: "0.0.0"
source_gen:
dependency: transitive
description:
@@ -501,10 +501,10 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
version: "1.12.0"
stream_channel:
dependency: transitive
description:
@@ -525,10 +525,10 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.0"
term_glyph:
dependency: transitive
description:
@@ -541,10 +541,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
version: "0.7.3"
timing:
dependency: transitive
description:
@@ -573,10 +573,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.2.5"
version: "14.3.0"
watcher:
dependency: transitive
description:
+15 -15
View File
@@ -141,10 +141,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.19.0"
convert:
dependency: transitive
description:
@@ -328,18 +328,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
@@ -472,7 +472,7 @@ packages:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
version: "0.0.0"
source_gen:
dependency: transitive
description:
@@ -501,10 +501,10 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
version: "1.12.0"
stream_channel:
dependency: transitive
description:
@@ -525,10 +525,10 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.0"
term_glyph:
dependency: transitive
description:
@@ -541,10 +541,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
version: "0.7.3"
timing:
dependency: transitive
description:
@@ -573,10 +573,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.2.5"
version: "14.3.0"
watcher:
dependency: transitive
description:
+15 -15
View File
@@ -141,10 +141,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.19.0"
convert:
dependency: transitive
description:
@@ -328,18 +328,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
@@ -472,7 +472,7 @@ packages:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
version: "0.0.0"
source_gen:
dependency: transitive
description:
@@ -501,10 +501,10 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
version: "1.12.0"
stream_channel:
dependency: transitive
description:
@@ -525,10 +525,10 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.0"
term_glyph:
dependency: transitive
description:
@@ -541,10 +541,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
version: "0.7.3"
timing:
dependency: transitive
description:
@@ -573,10 +573,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.2.5"
version: "14.3.0"
watcher:
dependency: transitive
description:
@@ -174,7 +174,7 @@ class SearchEmailWithSortOrderScenario extends BaseTestScenario {
final listReceiveAtTime = listEmailTile
.map((emailTile) => emailTile.presentationEmail.receivedAt?.value)
.whereNotNull()
.nonNulls
.toList();
expect(listReceiveAtTime.isSortedByMostRecent(), isTrue);
@@ -186,7 +186,7 @@ class SearchEmailWithSortOrderScenario extends BaseTestScenario {
final listReceiveAtTime = listEmailTile
.map((emailTile) => emailTile.presentationEmail.receivedAt?.value)
.whereNotNull()
.nonNulls
.toList();
expect(listReceiveAtTime.isSortedByOldestFirst(), isTrue);
@@ -200,7 +200,7 @@ class SearchEmailWithSortOrderScenario extends BaseTestScenario {
List<UnsignedInt> sizeList = listEmailTile
.mapIndexed((index, emailTile) => listEmailTile.elementAt(index).presentationEmail.size)
.whereNotNull()
.nonNulls
.toList();
expect(_isSortedAscending(sizeList), isTrue);
@@ -214,7 +214,7 @@ class SearchEmailWithSortOrderScenario extends BaseTestScenario {
List<UnsignedInt> sizeList = listEmailTile
.mapIndexed((index, emailTile) => listEmailTile.elementAt(index).presentationEmail.size)
.whereNotNull()
.nonNulls
.toList();
expect(_isSortedAscending(sizeList), isFalse);
+1 -1
View File
@@ -372,7 +372,7 @@ SPEC CHECKSUMS:
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
external_app_launcher: ad55ac844aa21f2d2197d7cec58ff0d0dc40bbc0
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
file_picker: b159e0c068aef54932bb15dc9fd1571818edaf49
Firebase: 0219acf760880eeec8ce479895bd7767466d9f81
firebase_core: dee76ded6c693fdb38b8ea39aef7129e32e587a3
firebase_messaging: 67fbcdaf6a7c81849590e542eff2409dc49d9fa5
@@ -1,4 +1,3 @@
import 'package:collection/collection.dart';
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/core/error/set_error.dart';
@@ -57,7 +56,7 @@ mixin HandleSetErrorMixin {
}
Map<Id, SetError> handleSetResponse(List<SetResponse?> listSetResponse) {
final listSetResponseNotNull = listSetResponse.whereNotNull().toList();
final listSetResponseNotNull = listSetResponse.nonNulls.toList();
if (listSetResponseNotNull.isEmpty) {
return <Id, SetError>{};
}
@@ -40,7 +40,7 @@ mixin PopupContextMenuActionMixin {
),
),
backgroundColor: Colors.white,
barrierColor: Colors.black.withOpacity(0.2),
barrierColor: Colors.black.withValues(alpha: 0.2),
builder: (_) {
return PointerInterceptor(
child: Container(
@@ -117,7 +117,7 @@ class CleanMessagesBanner extends StatelessWidget {
return Container(
decoration: BoxDecoration(
color: AppColor.m3LayerDarkOutline.withOpacity(0.08),
color: AppColor.m3LayerDarkOutline.withValues(alpha: 0.08),
borderRadius: const BorderRadius.all(Radius.circular(8)),
),
padding: displayPositiveActionIsNewLine
@@ -14,7 +14,7 @@ abstract class ContextMenuItemAction<T> with EquatableMixin {
String get actionName;
Color get actionNameColor => AppColor.gray424244.withOpacity(0.9);
Color get actionNameColor => AppColor.gray424244.withValues(alpha: 0.9);
void onClick(OnContextMenuActionClick callback) => callback(this);
}
@@ -22,7 +22,7 @@ abstract class ContextMenuItemAction<T> with EquatableMixin {
mixin OptionalIcon {
String get actionIcon;
Color get actionIconColor => AppColor.gray424244.withOpacity(0.72);
Color get actionIconColor => AppColor.gray424244.withValues(alpha: 0.72);
}
mixin OptionalSelectedIcon<T> {
@@ -1,7 +1,6 @@
import 'dart:async';
import 'dart:math';
import 'package:collection/collection.dart';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
@@ -299,7 +298,7 @@ class _DefaultAutocompleteInputFieldWidgetState
}
return _currentListEmailAddress
.map((emailAddress) => emailAddress.email)
.whereNotNull()
.nonNulls
.contains(inputEmail);
}
@@ -70,7 +70,7 @@ class DropDownButtonWidget<T> extends StatelessWidget {
_getTextItemDropdown(context, item: itemSelected),
style: ThemeUtils.defaultTextStyleInterFont.copyWith(fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(opacity)),
color: Colors.black.withValues(alpha: opacity)),
maxLines: 1,
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
@@ -124,7 +124,7 @@ class DropDownButtonWidget<T> extends StatelessWidget {
_getTextItemDropdown(context, item: itemSelected),
style: ThemeUtils.defaultTextStyleInterFont.copyWith(fontSize: 16,
fontWeight: FontWeight.normal,
color: itemSelected != null ? Colors.black.withOpacity(opacity) : AppColor.textFieldHintColor),
color: itemSelected != null ? Colors.black.withValues(alpha: opacity) : AppColor.textFieldHintColor),
maxLines: 1,
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
@@ -41,7 +41,7 @@ class EmailAddressWithCopyWidget extends StatelessWidget {
backgroundColor: Colors.transparent,
iconSize: 20,
iconColor: copyIconColor ??
AppColor.textSecondary.withOpacity(0.48),
AppColor.textSecondary.withValues(alpha: 0.48),
padding: const EdgeInsets.all(5),
margin: copyIconMargin,
onTapActionCallback: onCopyButtonAction,
@@ -147,7 +147,7 @@ class ReportMessageBanner extends StatelessWidget {
Color get _backgroundColor => isDesktop
? AppColor.lightGrayEAEDF2
: AppColor.m3LayerDarkOutline.withOpacity(0.08);
: AppColor.m3LayerDarkOutline.withValues(alpha: 0.08);
double get _bannerHeight => isDesktop ? 44 : 52;
}
@@ -1923,7 +1923,9 @@ class ComposerController extends BaseController
if (PlatformInfo.isWeb &&
!_isEmailBodyLoaded &&
!screenDisplayMode.value.isNotContentVisible()) return true;
!screenDisplayMode.value.isNotContentVisible()) {
return true;
}
if (PlatformInfo.isMobile && !_isEmailBodyLoaded) return true;
@@ -97,8 +97,8 @@ mixin RichTextButtonMixin {
icon: SvgPicture.asset(
path,
colorFilter: isSelected == true
? Colors.black.withOpacity(opacity).asFilter()
: AppColor.colorDefaultRichTextButton.withOpacity(opacity).asFilter(),
? Colors.black.withValues(alpha: opacity).asFilter()
: AppColor.colorDefaultRichTextButton.withValues(alpha: opacity).asFilter(),
fit: BoxFit.fill),
iconPadding: const EdgeInsets.all(4),
colorFocus: Colors.white,
@@ -123,11 +123,11 @@ mixin RichTextButtonMixin {
message: tooltip,
child: SvgPicture.asset(
path,
colorFilter: newColor?.withOpacity(opacity).asFilter(),
colorFilter: newColor?.withValues(alpha: opacity).asFilter(),
fit: BoxFit.fill))
: SvgPicture.asset(
path,
colorFilter: newColor?.withOpacity(opacity).asFilter(),
colorFilter: newColor?.withValues(alpha: opacity).asFilter(),
fit: BoxFit.fill);
}
@@ -142,7 +142,7 @@ mixin RichTextButtonMixin {
return SvgPicture.asset(
path,
colorFilter: newColor?.withOpacity(opacity).asFilter(),
colorFilter: newColor?.withValues(alpha: opacity).asFilter(),
fit: BoxFit.fill);
}
@@ -155,7 +155,7 @@ mixin RichTextButtonMixin {
? AppColor.colorDefaultRichTextButton
: colorSelected;
return Icon(iconData,
color: (newColor ?? AppColor.colorDefaultRichTextButton).withOpacity(opacity),
color: (newColor ?? AppColor.colorDefaultRichTextButton).withValues(alpha: opacity),
size: 20);
}
@@ -171,7 +171,7 @@ mixin RichTextButtonMixin {
return Tooltip(
message: tooltip,
child: Icon(iconData,
color: (newColor ?? AppColor.colorDefaultRichTextButton).withOpacity(opacity),
color: (newColor ?? AppColor.colorDefaultRichTextButton).withValues(alpha: opacity),
size: 20),
);
}
@@ -101,8 +101,6 @@ enum RichTextStyleType {
return AppLocalizations.of(context).paragraph;
case orderList:
return AppLocalizations.of(context).orderList;
default:
return '';
}
}
}
@@ -10,7 +10,7 @@ class DropZoneWidgetStyle {
static const List<double> dashSize = [6, 3];
static Color backgroundColor = AppColor.colorDropZoneBackground.withOpacity(0.7);
static Color backgroundColor = AppColor.colorDropZoneBackground.withValues(alpha: 0.7);
static const Color borderColor = AppColor.colorDropZoneBorder;
static const EdgeInsetsGeometry padding = EdgeInsets.all(20);
@@ -39,13 +39,13 @@ class MobileEditRecipientsView extends StatelessWidget {
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.15),
color: Colors.black.withValues(alpha: 0.15),
blurRadius: 8,
spreadRadius: 3,
offset: const Offset(0, 4),
),
BoxShadow(
color: Colors.black.withOpacity(0.3),
color: Colors.black.withValues(alpha: 0.3),
blurRadius: 3,
offset: const Offset(0, 1),
),
@@ -123,7 +123,7 @@ class MobileEditRecipientsView extends StatelessWidget {
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: AppColor.gray424244.withOpacity(0.12),
color: AppColor.gray424244.withValues(alpha: 0.12),
width: 1,
),
),
@@ -42,13 +42,13 @@ class DesktopEditRecipientsView extends StatelessWidget {
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.15),
color: Colors.black.withValues(alpha: 0.15),
blurRadius: 8,
spreadRadius: 3,
offset: const Offset(0, 4),
),
BoxShadow(
color: Colors.black.withOpacity(0.3),
color: Colors.black.withValues(alpha: 0.3),
blurRadius: 3,
offset: const Offset(0, 1),
),
@@ -48,7 +48,7 @@ class EmailAddressActionWidget extends StatelessWidget {
fontSize: 14,
height: 21.01 / 14,
letterSpacing: -0.15,
color: AppColor.gray424244.withOpacity(0.9),
color: AppColor.gray424244.withValues(alpha: 0.9),
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
@@ -191,7 +191,7 @@ class _SavingMessageDialogViewState extends State<SavingMessageDialogView> {
const SizedBox(width: 8),
Expanded(
child: LinearProgressIndicator(
color: Colors.white.withOpacity(0.6),
color: Colors.white.withValues(alpha: 0.6),
backgroundColor: AppColor.primaryColor,
borderRadius: const BorderRadius.all(Radius.circular(12)),
),
@@ -180,7 +180,7 @@ class _SavingTemplateDialogViewState extends State<SavingTemplateDialogView> {
const SizedBox(width: 8),
Expanded(
child: LinearProgressIndicator(
color: Colors.white.withOpacity(0.6),
color: Colors.white.withValues(alpha: 0.6),
backgroundColor: AppColor.primaryColor,
borderRadius: const BorderRadius.all(Radius.circular(12)),
),
@@ -188,7 +188,7 @@ class _SendingMessageDialogViewState extends State<SendingMessageDialogView> {
const SizedBox(width: 8),
Expanded(
child: LinearProgressIndicator(
color: Colors.white.withOpacity(0.6),
color: Colors.white.withValues(alpha: 0.6),
backgroundColor: AppColor.primaryColor,
borderRadius: const BorderRadius.all(Radius.circular(12)),
),
@@ -169,7 +169,7 @@ class _PrintDraftDialogViewState extends State<PrintDraftDialogView> {
const SizedBox(width: 8),
Expanded(
child: LinearProgressIndicator(
color: Colors.white.withOpacity(0.6),
color: Colors.white.withValues(alpha: 0.6),
backgroundColor: AppColor.primaryColor,
borderRadius: const BorderRadius.all(Radius.circular(12)),
),
@@ -64,7 +64,7 @@ class ToolbarRichTextWebBuilder extends StatelessWidget with RichTextButtonMixin
isSelected: richTextWebController.isMenuHeaderStyleOpen,
icon: SvgPicture.asset(
RichTextStyleType.headerStyle.getIcon(_imagePaths),
colorFilter: AppColor.colorDefaultRichTextButton.withOpacity(opacity).asFilter(),
colorFilter: AppColor.colorDefaultRichTextButton.withValues(alpha: opacity).asFilter(),
fit: BoxFit.fill
),
padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 5),
@@ -54,7 +54,7 @@ class AppBarContactWidget extends StatelessWidget {
iconSize: 24,
padding: const EdgeInsets.all(3),
iconColor: AppColor.colorCloseButton,
backgroundColor: AppColor.colorCloseButton.withOpacity(0.12),
backgroundColor: AppColor.colorCloseButton.withValues(alpha: 0.12),
onTapActionCallback: onCloseContactView,
)
),
@@ -28,7 +28,7 @@ class ContactListActionWidget extends StatelessWidget {
Flexible(
child: TMailButtonWidget.fromText(
text: AppLocalizations.of(context).clearFilter.capitalizeFirstEach,
backgroundColor: AppColor.colorContactViewClearFilterButton.withOpacity(0.05),
backgroundColor: AppColor.colorContactViewClearFilterButton.withValues(alpha: 0.05),
borderRadius: 10,
maxHeight: 44,
minWidth: 156,
@@ -78,7 +78,7 @@ class HtmlAnalyzer {
}
return null;
})
.whereNotNull()
.nonNulls
.toList();
log('HtmlAnalyzer::getListEventAction:OPEN_PAAS::listEventAction: $listEventAction');
return listEventAction;
@@ -98,7 +98,7 @@ class HtmlAnalyzer {
}
return null;
})
.whereNotNull()
.nonNulls
.toList();
log('HtmlAnalyzer::getListEventAction:GOOGLE::listEventAction: $listEventAction');
return listEventAction;
@@ -1,5 +1,4 @@
import 'package:collection/collection.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart';
import 'package:model/email/attachment.dart';
@@ -14,12 +13,12 @@ extension ListAttachmentsExtension on List<Attachment> {
Set<Id> get subtypeICSBlobIds => where((attachment) => attachment.type?.subtype == Attachment.eventICSSubtype)
.map((attachment) => attachment.blobId)
.whereNotNull()
.nonNulls
.toSet();
Set<Id> get subtypeCalendarBlobIds => where((attachment) => attachment.type?.subtype == Attachment.eventCalendarSubtype)
.map((attachment) => attachment.blobId)
.whereNotNull()
.nonNulls
.toSet();
Set<EmailBodyPart> toEmailBodyPart({String? charset}) => map((attachment) => attachment.toEmailBodyPart(charset: charset)).toSet();
@@ -2124,7 +2124,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
);
await Get.generalDialog(
barrierColor: Colors.black.withOpacity(0.8),
barrierColor: Colors.black.withValues(alpha: 0.8),
pageBuilder: (_, __, ___) {
return PointerInterceptor(
child: PDFViewer(
@@ -150,7 +150,7 @@ extension CalendarEventExtension on CalendarEvent {
if (participants?.isNotEmpty == true) {
final listMatchedAttendee = participants
!.where((attendee) => attendee.mailto != null && listEmailAddressSender.contains(attendee.mailto!.mailAddress.value))
.whereNotNull();
.nonNulls;
log('CalendarEventExtension::findAttendeeHasUpdatedStatus:listMatchedAttendee: $listMatchedAttendee');
if (listMatchedAttendee.isNotEmpty) {
return listMatchedAttendee.first;
@@ -363,12 +363,12 @@ extension CalendarEventExtension on CalendarEvent {
final videoConferences = List<String>.empty(growable: true);
final openPaasVideoConferences = extensionFields?.mapFields['X-OPENPAAS-VIDEOCONFERENCE']
?.whereNotNull()
?.nonNulls
.where((link) => link.isNotEmpty)
.toList() ?? [];
log('CalendarEventExtension::openPaasVideoConferences: $openPaasVideoConferences');
final googleVideoConferences = extensionFields!.mapFields['X-GOOGLE-CONFERENCE']
?.whereNotNull()
?.nonNulls
.where((link) => link.isNotEmpty)
.toList() ?? [];
log('CalendarEventExtension::googleVideoConferences: $googleVideoConferences');
@@ -1,5 +1,4 @@
import 'package:collection/collection.dart';
import 'package:jmap_dart_client/jmap/mail/calendar/properties/attendee/calendar_attendee.dart';
import 'package:jmap_dart_client/jmap/mail/calendar/properties/calendar_organizer.dart';
@@ -7,7 +6,7 @@ extension ListAttendeeExtension on List<CalendarAttendee> {
String get mailtoAsString {
return map((attendee) => attendee.mailto?.mailAddress.value)
.whereNotNull()
.nonNulls
.join(', ');
}
@@ -16,7 +15,7 @@ extension ListAttendeeExtension on List<CalendarAttendee> {
return this;
}
return where((attendee) => attendee.mailto?.mailAddress != organizer.mailto)
.whereNotNull()
.nonNulls
.toList();
}
}
@@ -1,4 +1,3 @@
import 'package:collection/collection.dart';
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
@@ -53,7 +52,7 @@ class EmailUtils {
final allMatchesMailtoLinks = regExpMailtoLinks.allMatches(listUnsubscribe);
final listMailtoLinks = allMatchesMailtoLinks
.map((match) => match.group(0))
.whereNotNull()
.nonNulls
.toList();
log('EmailUtils::parsingUnsubscribe:listMailtoLinks: $listMailtoLinks');
@@ -61,7 +60,7 @@ class EmailUtils {
final allMatchesHttpLinks = regExpHttpLinks.allMatches(listUnsubscribe);
final listHttpLinks = allMatchesHttpLinks
.map((match) => match.group(0))
.whereNotNull()
.nonNulls
.toList();
log('EmailUtils::parsingUnsubscribe:listHttpLinks: $listHttpLinks');
@@ -33,13 +33,13 @@ class EmailAddressBottomSheetBuilder extends StatelessWidget {
),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.15),
color: Colors.black.withValues(alpha: 0.15),
blurRadius: 8,
spreadRadius: 3,
offset: const Offset(0, 4),
),
BoxShadow(
color: Colors.black.withOpacity(0.3),
color: Colors.black.withValues(alpha: 0.3),
blurRadius: 3,
spreadRadius: 0,
offset: const Offset(0, 1),
@@ -40,13 +40,13 @@ class EmailAddressDialogBuilder extends StatelessWidget {
borderRadius: const BorderRadius.all(Radius.circular(16)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.15),
color: Colors.black.withValues(alpha: 0.15),
blurRadius: 8,
spreadRadius: 3,
offset: const Offset(0, 4),
),
BoxShadow(
color: Colors.black.withOpacity(0.3),
color: Colors.black.withValues(alpha: 0.3),
blurRadius: 3,
spreadRadius: 0,
offset: const Offset(0, 1),
@@ -20,7 +20,7 @@ class TopBarAttachmentViewer extends StatelessWidget {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16),
height: 52,
color: Colors.black.withOpacity(0.3),
color: Colors.black.withValues(alpha: 0.3),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
@@ -32,8 +32,8 @@ class TopBarAttachmentViewer extends StatelessWidget {
color: Colors.white,
size: 24,
),
focusColor: Colors.black.withOpacity(0.3),
hoverColor: Colors.black.withOpacity(0.3),
focusColor: Colors.black.withValues(alpha: 0.3),
hoverColor: Colors.black.withValues(alpha: 0.3),
tooltip: AppLocalizations.of(context).close,
),
const SizedBox(width: 8),
@@ -59,8 +59,8 @@ class TopBarAttachmentViewer extends StatelessWidget {
color: Colors.white,
size: 24,
),
focusColor: Colors.black.withOpacity(0.3),
hoverColor: Colors.black.withOpacity(0.3),
focusColor: Colors.black.withValues(alpha: 0.3),
hoverColor: Colors.black.withValues(alpha: 0.3),
tooltip: AppLocalizations.of(context).print,
),
),
@@ -75,8 +75,8 @@ class TopBarAttachmentViewer extends StatelessWidget {
color: Colors.white,
size: 24,
),
focusColor: Colors.black.withOpacity(0.3),
hoverColor: Colors.black.withOpacity(0.3),
focusColor: Colors.black.withValues(alpha: 0.3),
hoverColor: Colors.black.withValues(alpha: 0.3),
tooltip: AppLocalizations.of(context).download,
),
)
@@ -27,7 +27,7 @@ class EmailRecoveryFormDesktopBuilder extends StatelessWidget {
final appLocalizations = AppLocalizations.of(context);
return Scaffold(
backgroundColor: Colors.black.withOpacity(0.20),
backgroundColor: Colors.black.withValues(alpha: 0.20),
body: GestureDetector(
onTap: FocusScope.of(context).unfocus,
child: Center(
@@ -129,9 +129,6 @@ class HomeController extends ReloadableController {
case LoginNavigateType.autoSignIn:
_handleAutoSignInViaDeepLinkSuccess(arguments.autoSignInViaDeepLinkSuccess!);
break;
default:
_cleanupCache();
break;
}
}
@@ -932,7 +932,7 @@ class IdentityCreatorController extends BaseController with DragDropFileMixin im
context,
originalFile: fileInfo.toPlatformFile(),
maxWidth: maxWidth.toInt()))
).then((listPlatformFiles) => listPlatformFiles.whereNotNull().toList());
).then((listPlatformFiles) => listPlatformFiles.nonNulls.toList());
if (_isExceedMaxUploadSize(listCompressedImages.totalFilesSize)) {
if (context.mounted) {
@@ -1,4 +1,3 @@
import 'package:collection/collection.dart';
import 'package:core/utils/app_logger.dart';
import 'package:tmail_ui_user/features/login/data/extensions/account_cache_extensions.dart';
import 'package:tmail_ui_user/features/login/data/model/account_cache.dart';
@@ -7,7 +6,7 @@ extension ListAccountCacheExtension on List<AccountCache> {
List<AccountCache> unselected() => map((account) => account.unselected()).toList();
List<AccountCache> removeDuplicated() {
final listAccountId = map((account) => account.accountId).whereNotNull().toSet();
final listAccountId = map((account) => account.accountId).nonNulls.toSet();
log('ListAccountCacheExtension::removeDuplicated:listAccountId: $listAccountId');
retainWhere((account) => listAccountId.remove(account.accountId));
log('ListAccountCacheExtension::removeDuplicated:listAccount: $this');
@@ -1,6 +1,5 @@
import 'dart:async';
import 'package:collection/collection.dart';
import 'package:core/utils/app_logger.dart';
import 'package:flutter/material.dart' hide State;
import 'package:get/get.dart';
@@ -400,7 +399,7 @@ class MailboxAPI with HandleSetErrorMixin {
);
final listMailboxIdSubscribe = setMailboxResponse?.updated?.keys
.whereNotNull()
.nonNulls
.map((id) => MailboxId(id))
.toList();
@@ -154,7 +154,7 @@ extension MailboxActionsExtension on MailboxActions {
case MailboxActions.delete:
return AppColor.redFF3347;
default:
return AppColor.gray424244.withOpacity(0.72);
return AppColor.gray424244.withValues(alpha: 0.72);
}
}
@@ -163,7 +163,7 @@ extension MailboxActionsExtension on MailboxActions {
case MailboxActions.delete:
return AppColor.redFF3347;
default:
return AppColor.gray424244.withOpacity(0.9);
return AppColor.gray424244.withValues(alpha: 0.9);
}
}
@@ -42,8 +42,6 @@ extension MailboxCategoriessExtension on MailboxCategories {
return categoriesExpandMode.personalFolders;
case MailboxCategories.teamMailboxes:
return categoriesExpandMode.teamMailboxes;
default:
return ExpandMode.COLLAPSE;
}
}
}
@@ -72,7 +72,7 @@ class _EmptyMailboxPopupDialogWidgetState extends State<EmptyMailboxPopupDialogW
color: AppColor.steelGrayA540,
),
backgroundColor: _visible
? Theme.of(context).colorScheme.outline.withOpacity(0.08)
? Theme.of(context).colorScheme.outline.withValues(alpha: 0.08)
: Colors.transparent,
padding: EmptyMailboxPopupDialogWidgetStyles.emptyButtonPadding,
onTapActionCallback: () => _setVisible(true),
@@ -147,7 +147,7 @@ class _LabelMailboxItemWidgetState extends State<LabelMailboxItemWidget> {
? const EdgeInsets.all(3)
: TrailingMailboxItemWidgetStyles.menuIconPadding,
backgroundColor: _morePopupMenuVisible
? Theme.of(context).colorScheme.outline.withOpacity(0.08)
? Theme.of(context).colorScheme.outline.withValues(alpha: 0.08)
: TrailingMailboxItemWidgetStyles.menuIconBackgroundColor,
onTapActionAtPositionCallback: (position) {
if (!_responsiveUtils.isScreenWithShortestSide(context)) {
@@ -18,7 +18,9 @@ extension UpdateCurrentEmailsFlagsExtension on MailboxDashBoardController {
if (readAction == null &&
markStarAction == null &&
!markAsAnswered &&
!markAsForwarded) return;
!markAsForwarded) {
return;
}
final currentEmails = dashboardRoute.value == DashboardRoutes.searchEmail
? listResultSearch
@@ -87,13 +87,6 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
width: 30,
height: 30,
child: CupertinoActivityIndicator(color: AppColor.colorLoading)));
default:
return ResponsiveWidget(
responsiveUtils: controller.responsiveUtils,
desktop: bodyView,
tabletLarge: bodyView,
landscapeTablet: bodyView,
mobile: _buildScaffoldHaveDrawer(body: ThreadView()));
}
}),
),
@@ -443,7 +443,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
if (controller.isRefreshingAllMailboxAndEmail) {
return TMailContainerWidget(
borderRadius: 10,
backgroundColor: AppColor.colorFilterMessageButton.withOpacity(0.6),
backgroundColor: AppColor.colorFilterMessageButton.withValues(alpha: 0.6),
padding: const EdgeInsetsDirectional.symmetric(vertical: 8, horizontal: 8.5),
child: const CupertinoLoadingWidget(size: 16));
} else {
@@ -452,7 +452,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
icon: controller.imagePaths.icRefresh,
borderRadius: 10,
iconSize: 16,
backgroundColor: AppColor.colorFilterMessageButton.withOpacity(0.6),
backgroundColor: AppColor.colorFilterMessageButton.withValues(alpha: 0.6),
onTapActionCallback: controller.refreshMailboxAction,
);
}
@@ -485,7 +485,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
),
),
style: ElevatedButton.styleFrom(
backgroundColor: AppColor.colorFilterMessageButton.withOpacity(0.6),
backgroundColor: AppColor.colorFilterMessageButton.withValues(alpha: 0.6),
shadowColor: Colors.transparent,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
shape: const RoundedRectangleBorder(
@@ -530,7 +530,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
icon: controller.imagePaths.icRecoverDeletedMessages,
borderRadius: 10,
iconSize: 16,
backgroundColor: AppColor.colorFilterMessageButton.withOpacity(0.6),
backgroundColor: AppColor.colorFilterMessageButton.withValues(alpha: 0.6),
margin: const EdgeInsetsDirectional.only(start: 16),
onTapActionCallback: () => controller.gotoEmailRecovery(),
);
@@ -86,7 +86,7 @@ enum QuickSearchFilter {
Color getBackgroundColor({bool isSelected = false}) {
if (isSelected) {
return AppColor.primaryColor.withOpacity(0.06);
return AppColor.primaryColor.withValues(alpha: 0.06);
} else {
return AppColor.colorSearchFilterButton;
}
@@ -94,17 +94,17 @@ enum QuickSearchFilter {
Color getMobileBackgroundColor({bool isSelected = false}) {
if (isSelected) {
return AppColor.primaryColor.withOpacity(0.06);
return AppColor.primaryColor.withValues(alpha: 0.06);
} else {
return AppColor.colorMobileSearchFilterButton.withOpacity(0.6);
return AppColor.colorMobileSearchFilterButton.withValues(alpha: 0.6);
}
}
Color getSuggestionBackgroundColor({bool isSelected = false}) {
if (isSelected) {
return AppColor.primaryColor.withOpacity(0.06);
return AppColor.primaryColor.withValues(alpha: 0.06);
} else {
return AppColor.colorSuggestionSearchFilterButton.withOpacity(0.6);
return AppColor.colorSuggestionSearchFilterButton.withValues(alpha: 0.6);
}
}
@@ -6,7 +6,7 @@ class AppGridDashboardStyle {
static const EdgeInsetsGeometry padding = EdgeInsetsDirectional.symmetric(horizontal: 10, vertical: 14);
static final List<BoxShadow> cardShadow = [
BoxShadow(
color: Colors.black.withOpacity(0.15),
color: Colors.black.withValues(alpha: 0.15),
blurRadius: 20,
offset: Offset.zero
),
@@ -7,7 +7,7 @@ class AutocompleteTagItemStyle {
static const double space = 4;
static const double deleteIconSize = 24;
static Color get backgroundColor => AppColor.colorBackgroundTagFilter.withOpacity(0.08);
static Color get backgroundColor => AppColor.colorBackgroundTagFilter.withValues(alpha: 0.08);
static const EdgeInsetsGeometry margin = EdgeInsetsDirectional.only(end: 8);
static const EdgeInsetsGeometry padding = EdgeInsetsDirectional.only(start: 8, end: 4, top: 4, bottom: 4);
@@ -32,8 +32,8 @@ class AdvancedSearchFilterOverlay extends StatelessWidget {
offset: Offset.zero),
]
),
child: SingleChildScrollView(
padding: const EdgeInsets.symmetric(vertical: 24, horizontal: 32),
child: const SingleChildScrollView(
padding: EdgeInsets.symmetric(vertical: 24, horizontal: 32),
child: AdvancedSearchInputForm(),
),
),
@@ -42,12 +42,12 @@ class ProfileSettingMenuOverlay extends StatelessWidget {
borderRadius: const BorderRadius.all(Radius.circular(14)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
color: Colors.black.withValues(alpha: 0.3),
blurRadius: 2,
spreadRadius: 0,
),
BoxShadow(
color: Colors.black.withOpacity(0.15),
color: Colors.black.withValues(alpha: 0.15),
blurRadius: 6,
spreadRadius: 2,
offset: const Offset(0, 2),
@@ -67,7 +67,7 @@ class ProfileSettingMenuOverlay extends StatelessWidget {
),
const SizedBox(height: 4),
Divider(
color: AppColor.profileMenuDivider.withOpacity(0.12),
color: AppColor.profileMenuDivider.withValues(alpha: 0.12),
height: 1,
),
...settingActionTypes
@@ -1,7 +1,6 @@
import 'dart:async';
import 'package:collection/collection.dart';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/keyboard_utils.dart';
@@ -207,7 +206,7 @@ class _AutocompleteContactTextFieldWithTagsState extends State<AutocompleteConta
}
return listEmailAddress
.map((emailAddress) => emailAddress.email)
.whereNotNull()
.nonNulls
.contains(inputEmail);
}
@@ -70,7 +70,9 @@ class LanguageAndRegionController extends BaseController {
if (accountId == null ||
session == null ||
!capabilityServerSettings.isSupported(session, accountId) ||
session.isLanguageReadOnly(accountId)) return;
session.isLanguageReadOnly(accountId)) {
return;
}
consumeState(saveLanguageToServerSettingsInteractor.execute(
accountId,
@@ -38,7 +38,7 @@ class LanguageAndRegionView extends GetWidget<LanguageAndRegionController> {
SettingHeaderWidget(
menuItem: AccountMenuItem.languageAndRegion,
textStyle: ThemeUtils.textStyleInter600().copyWith(
color: Colors.black.withOpacity(0.9),
color: Colors.black.withValues(alpha: 0.9),
),
padding: EdgeInsets.zero,
)
@@ -75,7 +75,7 @@ class _ChangeLanguageButtonWidgetState extends State<ChangeLanguageButtonWidget>
fontSize: 14,
height: 21.01 / 14,
letterSpacing: -0.15,
color: AppColor.gray424244.withOpacity(0.64),
color: AppColor.gray424244.withValues(alpha: 0.64),
),
);
}
@@ -120,7 +120,7 @@ class _ChangeLanguageButtonWidgetState extends State<ChangeLanguageButtonWidget>
.getLanguageNameByCurrentLocale(AppLocalizations.of(context)),
dropDownIcon: _imagePaths.icDropDown,
backgroundColor: isVisible
? AppColor.lightGrayEBEDF0.withOpacity(0.6)
? AppColor.lightGrayEBEDF0.withValues(alpha: 0.6)
: null,
onTap: () => _toggleLanguageMenuOverlay(true),
)
@@ -34,12 +34,12 @@ class LanguageRegionOverlay extends StatelessWidget {
borderRadius: const BorderRadius.all(Radius.circular(16)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
color: Colors.black.withValues(alpha: 0.3),
blurRadius: 2,
offset: const Offset(0, 1),
),
BoxShadow(
color: Colors.black.withOpacity(0.15),
color: Colors.black.withValues(alpha: 0.15),
blurRadius: 6,
spreadRadius: 2,
offset: const Offset(0, 2),
@@ -30,7 +30,7 @@ class LanguageItemWidget extends StatelessWidget {
child: InkWell(
onTap: () => onSelectLanguageAction.call(localeCurrent),
borderRadius: const BorderRadius.all(Radius.circular(8)),
hoverColor: AppColor.lightGrayEBEDF0.withOpacity(0.6),
hoverColor: AppColor.lightGrayEBEDF0.withValues(alpha: 0.6),
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 17),
height: 51,
@@ -41,7 +41,7 @@ class LanguageItemWidget extends StatelessWidget {
letterSpacing: -0.15,
fontSize: 16,
height: 21.01 / 16,
color: AppColor.gray424244.withOpacity(0.9),
color: AppColor.gray424244.withValues(alpha: 0.9),
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
@@ -35,7 +35,7 @@ enum EmailRuleActionType {
if (this == EmailRuleActionType.delete) {
return AppColor.redFF3347;
} else {
return AppColor.gray424244.withOpacity(0.72);
return AppColor.gray424244.withValues(alpha: 0.72);
}
}
@@ -43,7 +43,7 @@ enum EmailRuleActionType {
if (this == EmailRuleActionType.delete) {
return AppColor.redFF3347;
} else {
return AppColor.gray424244.withOpacity(0.79);
return AppColor.gray424244.withValues(alpha: 0.79);
}
}
}
@@ -52,7 +52,7 @@ class SettingOptionItem extends StatelessWidget {
fontSize: 14,
height: 21.01 / 14,
letterSpacing: -0.15,
color: AppColor.gray424244.withOpacity(0.64),
color: AppColor.gray424244.withValues(alpha: 0.64),
),
),
),
@@ -408,7 +408,9 @@ class IdentitiesController extends ReloadableController implements BeforeReconne
|| accountId == null
|| identityId == null
|| identityActionType == null
|| publicAssetsInIdentityArguments == null) return;
|| publicAssetsInIdentityArguments == null) {
return;
}
final cleanUpPublicAssetsInteractor = getBinding<CleanUpPublicAssetsInteractor>(
tag: BindingTag.cleanUpPublicAssetsInteractorBindingsTag);
@@ -461,7 +463,9 @@ class IdentitiesController extends ReloadableController implements BeforeReconne
final accountId = accountDashBoardController.accountId;
if (session == null
|| accountId.value == null
|| !PlatformInfo.isWeb) return;
|| !PlatformInfo.isWeb) {
return;
}
final getIdentityCacheOnWebInteractor = getBinding<GetIdentityCacheOnWebInteractor>(
tag: BindingTag.restoreIdentityCacheInteractorBindingsTag);
@@ -21,7 +21,7 @@ class SettingExplanationWidget extends StatelessWidget {
Widget child = Text(
menuItem.getExplanation(AppLocalizations.of(context)),
style: ThemeUtils.textStyleM3BodyMedium1
.copyWith(color: AppColor.gray424244.withOpacity(0.64)),
.copyWith(color: AppColor.gray424244.withValues(alpha: 0.64)),
);
if (isCenter) {
@@ -36,7 +36,7 @@ class SettingHeaderWidget extends StatelessWidget {
fontSize: 16,
height: 21.01 / 16,
letterSpacing: -0.15,
color: AppColor.gray424244.withOpacity(0.64),
color: AppColor.gray424244.withValues(alpha: 0.64),
),
),
),
@@ -1,6 +1,5 @@
import 'dart:async';
import 'package:collection/collection.dart';
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.dart';
@@ -62,7 +61,7 @@ abstract class PushBaseController {
final listEmailActions = listTypeName
.where((typeName) => typeName == TypeName.emailType || typeName == TypeName.emailDelivery)
.map((typeName) => _toPushNotificationAction(typeName, accountId, userName, mapTypeState, isForeground, session: session))
.whereNotNull()
.nonNulls
.toList();
log('PushBaseController::mappingTypeStateToAction():listEmailActions: $listEmailActions');
@@ -74,7 +73,7 @@ abstract class PushBaseController {
final listMailboxActions = listTypeName
.where((typeName) => typeName == TypeName.mailboxType)
.map((typeName) => _toPushNotificationAction(typeName, accountId, userName, mapTypeState, isForeground))
.whereNotNull()
.nonNulls
.toList();
log('PushBaseController::mappingTypeStateToAction():listMailboxActions: $listEmailActions');
@@ -72,9 +72,9 @@ extension QuotasExtensions on Quota {
Color getQuotaBannerBackgroundColor() {
if (isHardLimitReached) {
return AppColor.colorQuotaError.withOpacity(0.12);
return AppColor.colorQuotaError.withValues(alpha: 0.12);
} else if (isWarnLimitReached) {
return AppColor.colorBackgroundQuotasWarning.withOpacity(0.12);
return AppColor.colorBackgroundQuotasWarning.withValues(alpha: 0.12);
} else {
return AppColor.colorNetworkConnectionBannerBackground;
}
@@ -1,4 +1,3 @@
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:rule_filter/rule_filter/rule_condition.dart';
import 'package:rule_filter/rule_filter/rule_condition_group.dart';
@@ -123,7 +122,7 @@ extension SelectRuleActionFieldExtension on RulesFilterCreatorController {
} else {
return null;
}
}).whereNotNull().toList();
}).nonNulls.toList();
if (contextMenuActions.isEmpty) return;
@@ -249,7 +249,7 @@ class _MailboxSearchedItemBuilderState extends State<MailboxSearchedItemBuilder>
child: TMailButtonWidget.fromIcon(
icon: _imagePaths.icMoreVertical,
backgroundColor: _popupMenuVisible
? Theme.of(context).colorScheme.outline.withOpacity(0.08)
? Theme.of(context).colorScheme.outline.withValues(alpha: 0.08)
: Colors.transparent,
iconSize: 16,
padding: const EdgeInsetsDirectional.all(2),
@@ -39,24 +39,24 @@ enum SendingEmailActionType {
Color getButtonIconColor(ButtonState buttonState) {
switch(this) {
case SendingEmailActionType.delete:
return AppColor.colorDeletePermanentlyButton.withOpacity(buttonState.opacity);
return AppColor.colorDeletePermanentlyButton.withValues(alpha: buttonState.opacity);
case SendingEmailActionType.edit:
case SendingEmailActionType.resend:
return AppColor.primaryColor.withOpacity(buttonState.opacity);
return AppColor.primaryColor.withValues(alpha: buttonState.opacity);
case SendingEmailActionType.create:
return Colors.transparent.withOpacity(buttonState.opacity);
return Colors.transparent.withValues(alpha: buttonState.opacity);
}
}
Color getButtonTitleColor(ButtonState buttonState) {
switch(this) {
case SendingEmailActionType.delete:
return AppColor.colorDeletePermanentlyButton.withOpacity(buttonState.opacity);
return AppColor.colorDeletePermanentlyButton.withValues(alpha: buttonState.opacity);
case SendingEmailActionType.edit:
case SendingEmailActionType.resend:
return AppColor.primaryColor.withOpacity(buttonState.opacity);
return AppColor.primaryColor.withValues(alpha: buttonState.opacity);
case SendingEmailActionType.create:
return Colors.transparent.withOpacity(buttonState.opacity);
return Colors.transparent.withValues(alpha: buttonState.opacity);
}
}
}
@@ -129,9 +129,9 @@ extension FilterMessageOptionExtension on FilterMessageOption {
Color getBackgroundColor({bool isSelected = false}) {
if (isSelected) {
return AppColor.primaryColor.withOpacity(0.06);
return AppColor.primaryColor.withValues(alpha: 0.06);
} else {
return AppColor.colorFilterMessageButton.withOpacity(0.6);
return AppColor.colorFilterMessageButton.withValues(alpha: 0.6);
}
}
@@ -6,6 +6,6 @@ class SpamReportBannerStyles {
static const double padding = 12;
static const double borderRadius = 12;
static const double space = 8;
static Color backgroundColor = AppColor.colorSpamReportBannerBackground.withOpacity(0.12);
static Color backgroundColor = AppColor.colorSpamReportBannerBackground.withValues(alpha: 0.12);
static const Color strokeBorderColor = AppColor.colorSpamReportBannerStrokeBorder;
}
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
class SpamReportBannerWebStyles {
static const double borderRadius = 12;
static Color backgroundColor = AppColor.colorSpamReportBannerBackground.withOpacity(0.12);
static Color backgroundColor = AppColor.colorSpamReportBannerBackground.withValues(alpha: 0.12);
static const Color strokeBorderColor = AppColor.colorSpamReportBannerStrokeBorder;
static const EdgeInsetsGeometry bannerPadding = EdgeInsetsDirectional.symmetric(
@@ -424,7 +424,9 @@ class ThreadController extends BaseController with EmailActionController {
final totalEmailsCount = currentMailbox.countTotalEmails;
if (totalEmailsCount == 0
|| mailboxDashBoardController.emailsInCurrentMailbox.isNotEmpty
) return;
) {
return;
}
dispatchState(Right(GetAllEmailLoading()));
}
@@ -119,7 +119,7 @@ class _DesktopListEmailActionHoverWidgetState
padding: _getPaddingIcon(),
margin: _getMarginIcon(),
backgroundColor: _popupMenuVisible
? Theme.of(context).colorScheme.outline.withOpacity(0.08)
? Theme.of(context).colorScheme.outline.withValues(alpha: 0.08)
: Colors.transparent,
tooltipMessage: AppLocalizations.of(context).more,
onTapActionAtPositionCallback: (position) {
@@ -67,7 +67,7 @@ class _EmailTileBuilderState extends State<EmailTileBuilder> with BaseEmailItem
EmailActionType.selection,
widget.presentationEmail
),
hoverColor: Theme.of(context).colorScheme.outline.withOpacity(0.08),
hoverColor: Theme.of(context).colorScheme.outline.withValues(alpha: 0.08),
child: Container(
padding: widget.padding ?? _getPaddingItem(context),
decoration: _getDecorationItem(),
@@ -203,7 +203,7 @@ class _EmailTileBuilderState extends State<EmailTileBuilder> with BaseEmailItem
widget.presentationEmail
),
onHover: (value) => _hoverNotifier.value = value,
hoverColor: Theme.of(context).colorScheme.outline.withOpacity(0.08),
hoverColor: Theme.of(context).colorScheme.outline.withValues(alpha: 0.08),
borderRadius: const BorderRadius.all(Radius.circular(14)),
child: Container(
padding: widget.padding ?? _getPaddingItem(context),
@@ -56,7 +56,7 @@ class EmptyEmailsWidget extends StatelessWidget {
letterSpacing: -0.15,
fontSize: 16,
height: 21.01 / 16,
color: AppColor.gray424244.withOpacity(0.64),
color: AppColor.gray424244.withValues(alpha: 0.64),
),
textAlign: TextAlign.center,
),
@@ -66,7 +66,7 @@ class _WebTabletBodyEmailItemWidgetState
EmailActionType.preview,
widget.presentationEmail,
),
hoverColor: Theme.of(context).colorScheme.outline.withOpacity(0.08),
hoverColor: Theme.of(context).colorScheme.outline.withValues(alpha: 0.08),
onHover: (value) {
setState(() {
_isHover = value;
@@ -262,7 +262,7 @@ class _WebTabletBodyEmailItemWidgetState
? Theme.of(context)
.colorScheme
.outline
.withOpacity(0.08)
.withValues(alpha: 0.08)
: Colors.transparent,
tooltipMessage: AppLocalizations.of(context).more,
onTapActionAtPositionCallback: (position) {
@@ -14,7 +14,7 @@ extension HandleGetEmailsByIdsSuccess on ThreadDetailController {
}
final selectedEmailId = mailboxDashBoardController.selectedEmail.value?.id;
final isLoadMore = emailIdsPresentation.values.whereNotNull().isNotEmpty;
final isLoadMore = emailIdsPresentation.values.nonNulls.isNotEmpty;
for (var presentationEmail in success.presentationEmails) {
if (presentationEmail.id == null) continue;
@@ -62,11 +62,11 @@ extension HandleRefreshThreadDetailAction on ThreadDetailController {
final afterRefreshedEmailIds = ThreadDetailPresentationUtils.refreshEmailIds(
original: emailIdsPresentation.keys.toList(),
created: emailsCreated.map((email) => email.id).whereNotNull().toList(),
created: emailsCreated.map((email) => email.id).nonNulls.toList(),
destroyed: emailIdsDestroyed.toList(),
);
final afterRefreshedEmails = ThreadDetailPresentationUtils.refreshPresentationEmails(
original: emailIdsPresentation.values.whereNotNull().toList(),
original: emailIdsPresentation.values.nonNulls.toList(),
created: emailsCreated,
updated: emailsUpdated,
destroyed: emailIdsDestroyed.toList(),
@@ -16,7 +16,9 @@ extension InitializeThreadDetailEmails on ThreadDetailController {
if (skipLoadThreadMetaData(
selectedEmailId: selectedEmailId,
updateCurrentThreadDetail: success.updateCurrentThreadDetail,
)) return;
)) {
return;
}
List<EmailId> emailIdsToLoadMetaData = [];
emailIdsToLoadMetaData = ThreadDetailPresentationUtils.getFirstLoadEmailIds(
@@ -1,4 +1,3 @@
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:model/email/presentation_email.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_manager.dart';
@@ -10,7 +9,7 @@ extension InitializeThreadDetailManager on ThreadDetailManager {
availableThreadIds.value = currentDisplayedEmails
.map((presentationEmail) => presentationEmail.threadId)
.toSet()
.whereNotNull()
.nonNulls
.toList();
if (availableThreadIds.isEmpty) return;
@@ -9,7 +9,9 @@ extension QuickCreateRuleFromCollapsedEmailSuccess on ThreadDetailController {
) {
if (success.newListRules.isEmpty ||
currentContext == null ||
currentOverlayContext == null) return;
currentOverlayContext == null) {
return;
}
appToast.showToastSuccessMessage(
currentOverlayContext!,
@@ -111,7 +111,9 @@ extension ThreadDetailOnEmailActionClick on ThreadDetailController {
if (session == null ||
accountId == null ||
(presentationEmail.hasStarred && markStarAction == MarkStarAction.markStar) ||
(!presentationEmail.hasStarred && markStarAction == MarkStarAction.unMarkStar)) return;
(!presentationEmail.hasStarred && markStarAction == MarkStarAction.unMarkStar)) {
return;
}
consumeState(emailActionReactor.markAsStarEmail(
session!,
@@ -1,8 +1,7 @@
import 'package:collection/collection.dart';
import 'package:html_editor_enhanced/html_editor.dart';
import 'package:model/upload/file_info.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/file_upload_extension.dart';
extension ListFileUploadExtension on List<FileUpload> {
List<FileInfo> toListFileInfo() => map((fileUpload) => fileUpload.toFileInfo()).whereNotNull().toList();
List<FileInfo> toListFileInfo() => map((fileUpload) => fileUpload.toFileInfo()).nonNulls.toList();
}
@@ -2,7 +2,6 @@
import 'dart:async';
import 'package:async/async.dart';
import 'package:collection/collection.dart';
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.dart';
@@ -243,7 +242,7 @@ class UploadController extends BaseController {
void _refreshListUploadAttachmentState() {
listUploadAttachments.value =
_uploadingStateFiles.uploadingStateFiles.whereNotNull().toList();
_uploadingStateFiles.uploadingStateFiles.nonNulls.toList();
listUploadAttachments.refresh();
}
@@ -253,7 +252,7 @@ class UploadController extends BaseController {
}
return listUploadAttachments
.map((fileState) => fileState.attachment)
.whereNotNull()
.nonNulls
.toList();
}
@@ -263,7 +262,7 @@ class UploadController extends BaseController {
}
return listUploadAttachments
.map((fileState) => fileState.file)
.whereNotNull()
.nonNulls
.toList();
}
@@ -49,7 +49,7 @@ class UploadFileStateList {
return false;
}
return _uploadingStateFiles
.whereNotNull()
.nonNulls
.every((file) => file.uploadStatus == UploadFileStatus.succeed);
}

Some files were not shown because too many files have changed in this diff Show More