TF-3586: Upgrade Flutter to 3.27.4
This commit is contained in:
@@ -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') }}"
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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
@@ -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()}';
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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,
|
||||
),
|
||||
)
|
||||
|
||||
+1
-1
@@ -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)) {
|
||||
|
||||
+3
-1
@@ -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);
|
||||
|
||||
+2
-2
@@ -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(),
|
||||
),
|
||||
),
|
||||
|
||||
+3
-3
@@ -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
-2
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -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,
|
||||
|
||||
+1
-1
@@ -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,
|
||||
)
|
||||
|
||||
+2
-2
@@ -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),
|
||||
)
|
||||
|
||||
+2
-2
@@ -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),
|
||||
|
||||
+2
-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);
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -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),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
+6
-2
@@ -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
-2
@@ -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;
|
||||
}
|
||||
+1
-1
@@ -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()));
|
||||
}
|
||||
|
||||
+1
-1
@@ -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) {
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+2
-2
@@ -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(),
|
||||
|
||||
+3
-1
@@ -16,7 +16,9 @@ extension InitializeThreadDetailEmails on ThreadDetailController {
|
||||
if (skipLoadThreadMetaData(
|
||||
selectedEmailId: selectedEmailId,
|
||||
updateCurrentThreadDetail: success.updateCurrentThreadDetail,
|
||||
)) return;
|
||||
)) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<EmailId> emailIdsToLoadMetaData = [];
|
||||
emailIdsToLoadMetaData = ThreadDetailPresentationUtils.getFirstLoadEmailIds(
|
||||
|
||||
+1
-2
@@ -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;
|
||||
|
||||
|
||||
+3
-1
@@ -9,7 +9,9 @@ extension QuickCreateRuleFromCollapsedEmailSuccess on ThreadDetailController {
|
||||
) {
|
||||
if (success.newListRules.isEmpty ||
|
||||
currentContext == null ||
|
||||
currentOverlayContext == null) return;
|
||||
currentOverlayContext == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
appToast.showToastSuccessMessage(
|
||||
currentOverlayContext!,
|
||||
|
||||
+3
-1
@@ -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
Reference in New Issue
Block a user