diff --git a/.github/workflows/build_apk.yml b/.github/workflows/build_apk.yml
index 6caf335..82b97f7 100644
--- a/.github/workflows/build_apk.yml
+++ b/.github/workflows/build_apk.yml
@@ -121,7 +121,7 @@ jobs:
uses: subosito/flutter-action@v2
with:
channel: "stable"
- flutter-version: "3.13.9"
+ flutter-version: "3.27.1"
- name: Prepare flutter project
run: |
diff --git a/.github/workflows/build_ipa.yml b/.github/workflows/build_ipa.yml
index 88294ba..4569520 100644
--- a/.github/workflows/build_ipa.yml
+++ b/.github/workflows/build_ipa.yml
@@ -116,7 +116,7 @@ jobs:
uses: subosito/flutter-action@v2
with:
channel: "stable"
- flutter-version: "3.13.9"
+ flutter-version: "3.27.1"
- name: Prepare flutter project
run: |
diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml
index 1aac0a8..2682f66 100644
--- a/.github/workflows/pr_check.yml
+++ b/.github/workflows/pr_check.yml
@@ -42,7 +42,7 @@ jobs:
- uses: subosito/flutter-action@v2
with:
channel: "stable"
- flutter-version: "3.13.9"
+ flutter-version: "3.27.1"
- name: Prepare flutter project
run: |
diff --git a/.github/workflows/run_integration_tests.yml b/.github/workflows/run_integration_tests.yml
index b49c3f8..d9adbde 100644
--- a/.github/workflows/run_integration_tests.yml
+++ b/.github/workflows/run_integration_tests.yml
@@ -31,7 +31,7 @@ jobs:
- uses: subosito/flutter-action@v2
with:
channel: "stable"
- flutter-version: "3.13.9"
+ flutter-version: "3.27.1"
- name: Prepare app
run: |
diff --git a/.gitignore b/.gitignore
index f8353b3..be55ad1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,7 +48,6 @@ app.*.map.json
/ios/build/
/ios/Runner.xcodeproj/project.pbxproj
-pubspec.lock
/ios/Podfile.lock
.fvm/
diff --git a/.vscode/settings.json b/.vscode/settings.json
index e929cb4..e04697a 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,6 +1,6 @@
{
"task.slowProviderWarning": true,
- "dart.flutterSdkPath": "fvm",
+ "dart.flutterSdkPath": ".fvm/flutter_sdk",
"search.exclude": {
"**/.fvm": true
},
diff --git a/README.md b/README.md
index 3114a99..c91d08b 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@ Without further delay behold my new Lightmeter app inspired by Material You (a.k
### 1. Install Flutter
-To build this app you need to install Flutter 3.13.9 stable. [How to install](https://docs.flutter.dev/get-started/install).
+To build this app you need to install Flutter 3.27.1 stable. [How to install](https://docs.flutter.dev/get-started/install).
### 2. Project setup
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 9625e10..7c56964 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -21,6 +21,6 @@
CFBundleVersion
1.0
MinimumOSVersion
- 11.0
+ 12.0
diff --git a/ios/Podfile b/ios/Podfile
index 5588975..c353189 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -36,6 +36,16 @@ end
post_install do |installer|
installer.pods_project.targets.each do |target|
+ if target.name == 'BoringSSL-GRPC'
+ target.source_build_phase.files.each do |file|
+ if file.settings && file.settings['COMPILER_FLAGS']
+ flags = file.settings['COMPILER_FLAGS'].split
+ flags.reject! { |flag| flag == '-GCC_WARN_INHIBIT_ALL_WARNINGS' }
+ file.settings['COMPILER_FLAGS'] = flags.join(' ')
+ end
+ end
+ end
+
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 7d56341..f49a9ab 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -155,6 +155,7 @@
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
45F53C083F2EA48EF231DA16 /* [CP] Embed Pods Frameworks */,
FF00F85CE432774850A0EDB7 /* [firebase_crashlytics] Crashlytics Upload Symbols */,
+ 08127035D2CDEEEBA66FCDBB /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -171,7 +172,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1300;
+ LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
@@ -214,6 +215,23 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
+ 08127035D2CDEEEBA66FCDBB /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
385E047940E442D45ED68E6E /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -292,11 +310,11 @@
inputFileListPaths = (
);
inputPaths = (
- "\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}\"",
- "\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/\"",
- "\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"",
- "\"$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)\"",
- "\"$(PROJECT_DIR)/firebase_app_id_file.json\"",
+ "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}",
+ "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}",
+ "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist",
+ "$(BUILT_PRODUCTS_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist",
+ "$(BUILT_PRODUCTS_DIR)/$(EXECUTABLE_PATH)",
);
name = "[firebase_crashlytics] Crashlytics Upload Symbols";
outputFileListPaths = (
@@ -305,7 +323,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"$PODS_ROOT/FirebaseCrashlytics/upload-symbols\" --flutter-project \"$PROJECT_DIR/firebase_app_id_file.json\" ";
+ shellScript = "\"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols\" -gsp \"${PROJECT_DIR}/Runner/GoogleService-Info.plist\" -p ios \"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}\"\n";
};
/* End PBXShellScriptBuildPhase section */
@@ -382,7 +400,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -397,6 +415,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-prod";
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
@@ -466,7 +485,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -515,7 +534,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -532,6 +551,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-prod";
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
@@ -561,6 +581,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-prod";
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
@@ -633,7 +654,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -647,6 +668,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev";
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
@@ -711,7 +733,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -728,6 +750,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev";
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
@@ -791,7 +814,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -806,6 +829,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev";
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 5dc5452..b43b14e 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -1,7 +1,7 @@
import UIKit
import Flutter
-@UIApplicationMain
+@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
diff --git a/lib/application.dart b/lib/application.dart
index a58de01..e272b92 100644
--- a/lib/application.dart
+++ b/lib/application.dart
@@ -44,7 +44,7 @@ class Application extends StatelessWidget {
],
supportedLocales: S.delegate.supportedLocales,
builder: (context, child) => MediaQuery(
- data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
+ data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling),
child: child!,
),
initialRoute: NavigationRoutes.meteringScreen.name,
diff --git a/lib/data/models/metering_screen_layout_config.dart b/lib/data/models/metering_screen_layout_config.dart
index a558202..64bc60c 100644
--- a/lib/data/models/metering_screen_layout_config.dart
+++ b/lib/data/models/metering_screen_layout_config.dart
@@ -8,7 +8,7 @@ typedef MeteringScreenLayoutConfig = Map;
extension MeteringScreenLayoutConfigJson on MeteringScreenLayoutConfig {
static MeteringScreenLayoutConfig fromJson(Map data) {
- int? migratedIndex(MeteringScreenLayoutFeature feature) {
+ int migratedIndex(MeteringScreenLayoutFeature feature) {
switch (feature) {
case MeteringScreenLayoutFeature.extremeExposurePairs:
return 0;
@@ -16,8 +16,6 @@ extension MeteringScreenLayoutConfigJson on MeteringScreenLayoutConfig {
return 1;
case MeteringScreenLayoutFeature.equipmentProfiles:
return 3;
- default:
- return null;
}
}
diff --git a/lib/data/shared_prefs_service.dart b/lib/data/shared_prefs_service.dart
index 2662d7f..726fd63 100644
--- a/lib/data/shared_prefs_service.dart
+++ b/lib/data/shared_prefs_service.dart
@@ -7,6 +7,7 @@ import 'package:lightmeter/data/models/metering_screen_layout_config.dart';
import 'package:lightmeter/data/models/supported_locale.dart';
import 'package:lightmeter/data/models/theme_type.dart';
import 'package:lightmeter/data/models/volume_action.dart';
+import 'package:lightmeter/utils/color_to_int.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
import 'package:shared_preferences/shared_preferences.dart';
@@ -155,7 +156,7 @@ class UserPreferencesService {
set themeType(ThemeType value) => _sharedPreferences.setInt(themeTypeKey, value.index);
Color get primaryColor => Color(_sharedPreferences.getInt(primaryColorKey) ?? 0xff2196f3);
- set primaryColor(Color value) => _sharedPreferences.setInt(primaryColorKey, value.value);
+ set primaryColor(Color value) => _sharedPreferences.setInt(primaryColorKey, value.toInt());
bool get dynamicColor => _sharedPreferences.getBool(dynamicColorKey) ?? false;
set dynamicColor(bool value) => _sharedPreferences.setBool(dynamicColorKey, value);
diff --git a/lib/res/theme.dart b/lib/res/theme.dart
index 9f9d392..0362dac 100644
--- a/lib/res/theme.dart
+++ b/lib/res/theme.dart
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:lightmeter/res/dimens.dart';
+import 'package:lightmeter/utils/color_to_int.dart';
import 'package:material_color_utilities/material_color_utilities.dart';
const primaryColorsList = [
@@ -32,7 +33,7 @@ ThemeData themeFrom(Color primaryColor, Brightness brightness) {
elevation: Dimens.elevationLevel0,
scrolledUnderElevation: Dimens.elevationLevel2,
color: scheme.surface,
- foregroundColor: scheme.onBackground,
+ foregroundColor: scheme.onSurface,
surfaceTintColor: scheme.surfaceTint,
),
cardTheme: CardTheme(
@@ -75,15 +76,13 @@ ThemeData themeFrom(Color primaryColor, Brightness brightness) {
ColorScheme _colorSchemeFromColor(Color primaryColor, Brightness brightness) {
final scheme = SchemeTonalSpot(
- sourceColorHct: Hct.fromInt(primaryColor.value),
+ sourceColorHct: Hct.fromInt(primaryColor.toInt()),
isDark: brightness == Brightness.dark,
contrastLevel: 0.0,
);
return ColorScheme(
brightness: brightness,
- background: Color(scheme.background),
- onBackground: Color(scheme.onBackground),
error: Color(scheme.error),
onError: Color(scheme.onError),
errorContainer: Color(scheme.errorContainer),
@@ -102,7 +101,7 @@ ColorScheme _colorSchemeFromColor(Color primaryColor, Brightness brightness) {
onTertiaryContainer: Color(scheme.onTertiaryContainer),
surface: Color(scheme.surface),
onSurface: Color(scheme.onSurface),
- surfaceVariant: Color(scheme.surfaceVariant),
+ surfaceContainerHighest: Color(scheme.surfaceContainerHighest),
onSurfaceVariant: Color(scheme.onSurfaceVariant),
outline: Color(scheme.outline),
outlineVariant: Color(scheme.outlineVariant),
diff --git a/lib/screens/metering/components/camera_container/bloc_container_camera.dart b/lib/screens/metering/components/camera_container/bloc_container_camera.dart
index 08bfee4..fd81b68 100644
--- a/lib/screens/metering/components/camera_container/bloc_container_camera.dart
+++ b/lib/screens/metering/components/camera_container/bloc_container_camera.dart
@@ -91,7 +91,6 @@ class CameraContainerBloc extends EvSourceBlocBase extends StatelessWidget {
value.toString(),
stepGranularity: 0.5,
minFontSize: 10,
- style: labelTextStyle(context).copyWith(color: Theme.of(context).colorScheme.onBackground),
+ style: labelTextStyle(context).copyWith(color: Theme.of(context).colorScheme.onSurface),
softWrap: false,
overflow: TextOverflow.fade,
maxLines: 1,
)
: Text(
value.toString(),
- style: labelTextStyle(context).copyWith(color: Theme.of(context).colorScheme.onBackground),
+ style: labelTextStyle(context).copyWith(color: Theme.of(context).colorScheme.onSurface),
softWrap: false,
overflow: TextOverflow.fade,
maxLines: 1,
@@ -97,7 +97,7 @@ class _Tick extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ColoredBox(
- color: Theme.of(context).colorScheme.onBackground,
+ color: Theme.of(context).colorScheme.onSurface,
child: SizedBox(
height: 1,
width: _length,
diff --git a/lib/screens/metering/components/shared/exposure_pairs_list/widget_list_exposure_pairs.dart b/lib/screens/metering/components/shared/exposure_pairs_list/widget_list_exposure_pairs.dart
index 415892d..f5ec902 100644
--- a/lib/screens/metering/components/shared/exposure_pairs_list/widget_list_exposure_pairs.dart
+++ b/lib/screens/metering/components/shared/exposure_pairs_list/widget_list_exposure_pairs.dart
@@ -78,7 +78,7 @@ class ExposurePairsList extends StatelessWidget {
? constraints.maxHeight / 2
: constraints.maxHeight,
child: ColoredBox(
- color: Theme.of(context).colorScheme.onBackground,
+ color: Theme.of(context).colorScheme.onSurface,
child: const SizedBox(width: 1),
),
),
diff --git a/lib/screens/metering/components/shared/readings_container/components/shared/animated_dialog_picker/components/animated_dialog/widget_dialog_animated.dart b/lib/screens/metering/components/shared/readings_container/components/shared/animated_dialog_picker/components/animated_dialog/widget_dialog_animated.dart
index 63bd1e6..2a0f50d 100644
--- a/lib/screens/metering/components/shared/readings_container/components/shared/animated_dialog_picker/components/animated_dialog/widget_dialog_animated.dart
+++ b/lib/screens/metering/components/shared/readings_container/components/shared/animated_dialog_picker/components/animated_dialog/widget_dialog_animated.dart
@@ -178,8 +178,8 @@ class AnimatedDialogState extends State with SingleTickerProvide
opaque: false,
transitionDuration: Duration.zero,
reverseTransitionDuration: Duration.zero,
- pageBuilder: (_, __, ___) => WillPopScope(
- onWillPop: () => _animateReverse().then((value) => true),
+ pageBuilder: (_, __, ___) => PopScope(
+ onPopInvokedWithResult: (_, __) => _animateReverse().then((value) => true),
child: _AnimatedOverlay(
controller: _animationController,
barrierColorAnimation: _barrierColorAnimation,
@@ -221,7 +221,13 @@ class AnimatedDialogState extends State with SingleTickerProvide
});
}
- Future close() => _animateReverse().then((_) => Navigator.of(context).pop());
+ Future close() {
+ return _animateReverse().then((_) {
+ if (mounted) {
+ Navigator.of(context).pop();
+ }
+ });
+ }
}
class _AnimatedOverlay extends StatelessWidget {
diff --git a/lib/screens/metering/screen_metering.dart b/lib/screens/metering/screen_metering.dart
index 7771bf2..417d330 100644
--- a/lib/screens/metering/screen_metering.dart
+++ b/lib/screens/metering/screen_metering.dart
@@ -69,9 +69,14 @@ class MeteringScreen extends StatelessWidget {
}
void pushNamed(BuildContext context, String routeName, {Object? arguments}) {
- context.read().add(const ScreenOnTopOpenedEvent());
- Navigator.pushNamed(context, routeName, arguments: arguments).then((_) {
- context.read().add(const ScreenOnTopClosedEvent());
+ final bloc = context.read();
+ bloc.add(const ScreenOnTopOpenedEvent());
+ Navigator.pushNamed(
+ context,
+ routeName,
+ arguments: arguments,
+ ).then((_) {
+ bloc.add(const ScreenOnTopClosedEvent());
});
}
}
diff --git a/lib/screens/settings/components/about/components/write_email/widget_list_tile_write_email.dart b/lib/screens/settings/components/about/components/write_email/widget_list_tile_write_email.dart
index aab959f..e5271ff 100644
--- a/lib/screens/settings/components/about/components/write_email/widget_list_tile_write_email.dart
+++ b/lib/screens/settings/components/about/components/write_email/widget_list_tile_write_email.dart
@@ -4,9 +4,14 @@ import 'package:lightmeter/constants.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:url_launcher/url_launcher.dart';
-class WriteEmailListTile extends StatelessWidget {
+class WriteEmailListTile extends StatefulWidget {
const WriteEmailListTile({super.key});
+ @override
+ State createState() => _WriteEmailListTileState();
+}
+
+class _WriteEmailListTileState extends State {
@override
Widget build(BuildContext context) {
return ListTile(
@@ -20,24 +25,30 @@ class WriteEmailListTile extends StatelessWidget {
mailToUrl,
mode: LaunchMode.externalApplication,
);
- } else {
- ScaffoldMessenger.of(context).showSnackBar(
- SnackBar(
- content: Text(S.of(context).youDontHaveMailApp),
- behavior: SnackBarBehavior.floating,
- action: SnackBarAction(
- label: S.of(context).copyEmail,
- onPressed: () {
- FlutterClipboard.copy(contactEmail).then((_) {
- ScaffoldMessenger.of(context).clearSnackBars();
- });
- },
- ),
- ),
- );
+ } else if (mounted) {
+ _showSnackBar();
}
});
},
);
}
+
+ Future _showSnackBar() async {
+ ScaffoldMessenger.of(context).showSnackBar(
+ SnackBar(
+ content: Text(S.of(context).youDontHaveMailApp),
+ behavior: SnackBarBehavior.floating,
+ action: SnackBarAction(
+ label: S.of(context).copyEmail,
+ onPressed: () {
+ FlutterClipboard.copy(contactEmail).then((_) {
+ if (mounted) {
+ ScaffoldMessenger.of(context).clearSnackBars();
+ }
+ });
+ },
+ ),
+ ),
+ );
+ }
}
diff --git a/lib/screens/settings/components/general/components/language/widget_list_tile_language.dart b/lib/screens/settings/components/general/components/language/widget_list_tile_language.dart
index 14d8971..b2410b4 100644
--- a/lib/screens/settings/components/general/components/language/widget_list_tile_language.dart
+++ b/lib/screens/settings/components/general/components/language/widget_list_tile_language.dart
@@ -14,6 +14,7 @@ class LanguageListTile extends StatelessWidget {
title: Text(S.of(context).language),
trailing: Text(UserPreferencesProvider.localeOf(context).localizedName),
onTap: () {
+ final prefs = UserPreferencesProvider.of(context);
showDialog(
context: context,
builder: (_) => DialogPicker(
@@ -21,11 +22,11 @@ class LanguageListTile extends StatelessWidget {
title: S.of(context).chooseLanguage,
selectedValue: UserPreferencesProvider.localeOf(context),
values: SupportedLocale.values,
- titleAdapter: (context, value) => value.localizedName,
+ titleAdapter: (_, value) => value.localizedName,
),
).then((value) {
if (value != null) {
- UserPreferencesProvider.of(context).setLocale(value);
+ prefs.setLocale(value);
}
});
},
diff --git a/lib/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart b/lib/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart
index 90ab875..e97ef13 100644
--- a/lib/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart
+++ b/lib/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart
@@ -14,6 +14,7 @@ class StopTypeListTile extends StatelessWidget {
title: Text(S.of(context).fractionalStops),
trailing: Text(_typeToString(context, UserPreferencesProvider.stopTypeOf(context))),
onTap: () {
+ final prefs = UserPreferencesProvider.of(context);
showDialog(
context: context,
builder: (_) => DialogPicker(
@@ -25,7 +26,7 @@ class StopTypeListTile extends StatelessWidget {
),
).then((value) {
if (value != null) {
- UserPreferencesProvider.of(context).setStopType(value);
+ prefs.setStopType(value);
}
});
},
diff --git a/lib/screens/settings/components/shared/expandable_section_list/components/dialog_section_name/widget_dialog_section_name.dart b/lib/screens/settings/components/shared/expandable_section_list/components/dialog_section_name/widget_dialog_section_name.dart
deleted file mode 100644
index 4fa2edc..0000000
--- a/lib/screens/settings/components/shared/expandable_section_list/components/dialog_section_name/widget_dialog_section_name.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:lightmeter/generated/l10n.dart';
-import 'package:lightmeter/res/dimens.dart';
-
-class ExpandableSectionNameDialog extends StatefulWidget {
- final String title;
- final String hint;
- final String initialValue;
-
- const ExpandableSectionNameDialog({
- this.initialValue = '',
- required this.title,
- required this.hint,
- super.key,
- });
-
- @override
- State createState() => _ExpandableSectionNameDialogState();
-}
-
-class _ExpandableSectionNameDialogState extends State {
- late final _nameController = TextEditingController(text: widget.initialValue);
-
- @override
- void dispose() {
- _nameController.dispose();
- super.dispose();
- }
-
- @override
- Widget build(BuildContext context) {
- return AlertDialog(
- icon: const Icon(Icons.edit_outlined),
- titlePadding: Dimens.dialogIconTitlePadding,
- title: Text(widget.title),
- content: TextField(
- autofocus: true,
- controller: _nameController,
- decoration: InputDecoration(hintText: widget.hint),
- ),
- actions: [
- TextButton(
- onPressed: Navigator.of(context).pop,
- child: Text(S.of(context).cancel),
- ),
- ValueListenableBuilder(
- valueListenable: _nameController,
- builder: (_, value, __) => TextButton(
- onPressed: value.text.isNotEmpty ? () => Navigator.of(context).pop(value.text) : null,
- child: Text(S.of(context).save),
- ),
- ),
- ],
- );
- }
-}
diff --git a/lib/screens/settings/components/shared/expandable_section_list/components/expandable_section_list_item/widget_expandable_section_list_item.dart b/lib/screens/settings/components/shared/expandable_section_list/components/expandable_section_list_item/widget_expandable_section_list_item.dart
deleted file mode 100644
index 28e1926..0000000
--- a/lib/screens/settings/components/shared/expandable_section_list/components/expandable_section_list_item/widget_expandable_section_list_item.dart
+++ /dev/null
@@ -1,184 +0,0 @@
-import 'dart:math';
-
-import 'package:flutter/material.dart';
-import 'package:flutter/scheduler.dart';
-import 'package:lightmeter/generated/l10n.dart';
-import 'package:lightmeter/res/dimens.dart';
-
-class ExpandableSectionListItem extends StatefulWidget {
- final String title;
- final VoidCallback onTitleTap;
- final VoidCallback onExpand;
- final List actions;
- final List children;
-
- const ExpandableSectionListItem({
- required this.title,
- required this.onTitleTap,
- required this.onExpand,
- required this.actions,
- required this.children,
- super.key,
- });
-
- static ExpandableSectionListItemState of(BuildContext context) {
- return context.findAncestorStateOfType()!;
- }
-
- @override
- State createState() => ExpandableSectionListItemState();
-}
-
-class ExpandableSectionListItemState extends State with TickerProviderStateMixin {
- late final AnimationController _controller = AnimationController(
- duration: Dimens.durationM,
- vsync: this,
- );
- bool get _expanded => _controller.isCompleted;
-
- @override
- void dispose() {
- _controller.dispose();
- super.dispose();
- }
-
- @override
- Widget build(BuildContext context) {
- return Card(
- child: Padding(
- padding: const EdgeInsets.symmetric(vertical: Dimens.paddingM),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- mainAxisSize: MainAxisSize.min,
- children: [
- ListTile(
- contentPadding: const EdgeInsets.symmetric(horizontal: Dimens.paddingM),
- title: Row(
- children: [
- _AnimatedNameLeading(controller: _controller),
- const SizedBox(width: Dimens.grid8),
- Flexible(
- child: Text(
- widget.title,
- maxLines: 1,
- overflow: TextOverflow.ellipsis,
- ),
- ),
- ],
- ),
- trailing: _AnimatedArrowButton(
- controller: _controller,
- onPressed: () => _expanded ? collapse() : expand(),
- ),
- onTap: () => _expanded ? widget.onTitleTap() : expand(),
- ),
- _AnimatedContent(
- controller: _controller,
- actions: widget.actions,
- children: widget.children,
- ),
- ],
- ),
- ),
- );
- }
-
- void expand() {
- widget.onExpand();
- _controller.forward();
- SchedulerBinding.instance.addPostFrameCallback((_) {
- Future.delayed(_controller.duration!).then((_) {
- Scrollable.ensureVisible(
- context,
- alignmentPolicy: ScrollPositionAlignmentPolicy.keepVisibleAtEnd,
- duration: _controller.duration!,
- );
- });
- });
- }
-
- void collapse() {
- _controller.reverse();
- }
-}
-
-class _AnimatedNameLeading extends AnimatedWidget {
- const _AnimatedNameLeading({required AnimationController controller}) : super(listenable: controller);
-
- Animation get _progress => listenable as Animation;
-
- @override
- Widget build(BuildContext context) {
- return Padding(
- padding: EdgeInsets.only(right: _progress.value * Dimens.grid8),
- child: Icon(
- Icons.edit_outlined,
- size: _progress.value * Dimens.grid24,
- ),
- );
- }
-}
-
-class _AnimatedArrowButton extends AnimatedWidget {
- final VoidCallback onPressed;
-
- const _AnimatedArrowButton({
- required AnimationController controller,
- required this.onPressed,
- }) : super(listenable: controller);
-
- Animation get _progress => listenable as Animation;
-
- @override
- Widget build(BuildContext context) {
- return IconButton(
- onPressed: onPressed,
- icon: Transform.rotate(
- angle: _progress.value * pi,
- child: const Icon(Icons.keyboard_arrow_down_outlined),
- ),
- tooltip: _progress.value == 0 ? S.of(context).tooltipExpand : S.of(context).tooltipCollapse,
- );
- }
-}
-
-class _AnimatedContent extends AnimatedWidget {
- final List actions;
- final List children;
-
- const _AnimatedContent({
- required AnimationController controller,
- required this.actions,
- required this.children,
- }) : super(listenable: controller);
-
- Animation get _progress => listenable as Animation;
-
- @override
- Widget build(BuildContext context) {
- return SizedOverflowBox(
- alignment: Alignment.topCenter,
- size: Size(
- double.maxFinite,
- _progress.value * Dimens.grid56 * (children.length + 1),
- ),
- // https://github.com/gskinnerTeam/flutter-folio/pull/62
- child: Opacity(
- opacity: _progress.value,
- child: Column(
- children: [
- ...children,
- ListTile(
- contentPadding: const EdgeInsets.symmetric(horizontal: Dimens.paddingM),
- trailing: Row(
- mainAxisAlignment: MainAxisAlignment.end,
- mainAxisSize: MainAxisSize.min,
- children: actions,
- ),
- ),
- ],
- ),
- ),
- );
- }
-}
diff --git a/lib/screens/settings/components/shared/expandable_section_list/widget_expandable_section_list.dart b/lib/screens/settings/components/shared/expandable_section_list/widget_expandable_section_list.dart
deleted file mode 100644
index 0fc5de2..0000000
--- a/lib/screens/settings/components/shared/expandable_section_list/widget_expandable_section_list.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:lightmeter/res/dimens.dart';
-import 'package:lightmeter/screens/settings/components/shared/expandable_section_list/components/expandable_section_list_item/widget_expandable_section_list_item.dart';
-import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
-
-typedef _WidgetBuilder = W Function(BuildContext context, T value);
-
-class ExpandableSectionList extends StatefulWidget {
- final List values;
- final VoidCallback onSectionTitleTap;
- final _WidgetBuilder, T> contentBuilder;
- final _WidgetBuilder, T> actionsBuilder;
-
- const ExpandableSectionList({
- required this.values,
- required this.onSectionTitleTap,
- required this.contentBuilder,
- required this.actionsBuilder,
- super.key,
- });
-
- @override
- State createState() => _ExpandableSectionListState();
-}
-
-class _ExpandableSectionListState extends State> {
- final Map> keysMap = {};
-
- @override
- void didChangeDependencies() {
- super.didChangeDependencies();
- _updateProfilesKeys();
- }
-
- @override
- Widget build(BuildContext context) {
- return SliverList(
- delegate: SliverChildBuilderDelegate(
- (context, index) {
- final item = widget.values[index];
- return Padding(
- padding: EdgeInsets.fromLTRB(
- Dimens.paddingM,
- index == 0 ? Dimens.paddingM : 0,
- Dimens.paddingM,
- Dimens.paddingM,
- ),
- child: ExpandableSectionListItem(
- key: keysMap[item.id],
- title: item.name,
- onTitleTap: widget.onSectionTitleTap,
- onExpand: () => _keepExpandedAt(index),
- actions: widget.actionsBuilder(context, item),
- children: widget.contentBuilder(context, item),
- ),
- );
- },
- childCount: widget.values.length,
- ),
- );
- }
-
- void _keepExpandedAt(int index) {
- keysMap.values.toList().getRange(0, index).forEach((element) {
- element.currentState?.collapse();
- });
- keysMap.values.toList().getRange(index + 1, keysMap.length).forEach((element) {
- element.currentState?.collapse();
- });
- }
-
- void _updateProfilesKeys() {
- if (widget.values.length > keysMap.length) {
- // item added
- final List idsToAdd = [];
- for (final item in widget.values) {
- if (!keysMap.keys.contains(item.id)) idsToAdd.add(item.id);
- }
- for (final id in idsToAdd) {
- keysMap[id] = GlobalKey(debugLabel: id);
- }
- idsToAdd.clear();
- } else if (widget.values.length < keysMap.length) {
- // item deleted
- final List idsToDelete = [];
- for (final id in keysMap.keys) {
- if (!widget.values.any((p) => p.id == id)) idsToDelete.add(id);
- }
- idsToDelete.forEach(keysMap.remove);
- idsToDelete.clear();
- } else {
- // item updated, no need to updated keys
- }
- }
-}
diff --git a/lib/screens/settings/components/theme/components/primary_color/components/primary_color_picker_dialog/widget_dialog_picker_primary_color.dart b/lib/screens/settings/components/theme/components/primary_color/components/primary_color_picker_dialog/widget_dialog_picker_primary_color.dart
index be9e8ad..8330eb6 100644
--- a/lib/screens/settings/components/theme/components/primary_color/components/primary_color_picker_dialog/widget_dialog_picker_primary_color.dart
+++ b/lib/screens/settings/components/theme/components/primary_color/components/primary_color_picker_dialog/widget_dialog_picker_primary_color.dart
@@ -3,6 +3,7 @@ import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/res/dimens.dart';
import 'package:lightmeter/res/theme.dart';
import 'package:lightmeter/screens/shared/filled_circle/widget_circle_filled.dart';
+import 'package:lightmeter/utils/color_to_int.dart';
class PrimaryColorDialogPicker extends StatefulWidget {
const PrimaryColorDialogPicker({super.key});
@@ -45,7 +46,7 @@ class _PrimaryColorDialogPickerState extends State {
padding: EdgeInsets.only(left: index == 0 ? 0 : Dimens.paddingS),
child: _SelectableColorItem(
color: color,
- selected: color.value == _selected.value,
+ selected: color.toInt() == _selected.toInt(),
onTap: () {
setState(() {
_selected = color;
diff --git a/lib/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart b/lib/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart
index 6560d4c..1e66074 100644
--- a/lib/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart
+++ b/lib/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart
@@ -22,12 +22,13 @@ class PrimaryColorListTile extends StatelessWidget {
leading: const Icon(Icons.palette_outlined),
title: Text(S.of(context).primaryColor),
onTap: () {
+ final prefs = UserPreferencesProvider.of(context);
showDialog(
context: context,
builder: (_) => const PrimaryColorDialogPicker(),
).then((value) {
if (value != null) {
- UserPreferencesProvider.of(context).setPrimaryColor(value);
+ prefs.setPrimaryColor(value);
}
});
},
diff --git a/lib/screens/settings/components/theme/components/theme_type/widget_list_tile_theme_type.dart b/lib/screens/settings/components/theme/components/theme_type/widget_list_tile_theme_type.dart
index a74464c..07326e5 100644
--- a/lib/screens/settings/components/theme/components/theme_type/widget_list_tile_theme_type.dart
+++ b/lib/screens/settings/components/theme/components/theme_type/widget_list_tile_theme_type.dart
@@ -14,6 +14,7 @@ class ThemeTypeListTile extends StatelessWidget {
title: Text(S.of(context).theme),
trailing: Text(_typeToString(context, UserPreferencesProvider.themeTypeOf(context))),
onTap: () {
+ final prefs = UserPreferencesProvider.of(context);
showDialog(
context: context,
builder: (_) => DialogPicker(
@@ -25,7 +26,7 @@ class ThemeTypeListTile extends StatelessWidget {
),
).then((value) {
if (value != null) {
- UserPreferencesProvider.of(context).setThemeType(value);
+ prefs.setThemeType(value);
}
});
},
diff --git a/lib/screens/shared/centered_slider/widget_slider_centered.dart b/lib/screens/shared/centered_slider/widget_slider_centered.dart
index f2cc66d..10039c6 100644
--- a/lib/screens/shared/centered_slider/widget_slider_centered.dart
+++ b/lib/screens/shared/centered_slider/widget_slider_centered.dart
@@ -120,7 +120,7 @@ class _Slider extends StatelessWidget {
width: handleDistance + trackThickness,
child: ClipRRect(
borderRadius: BorderRadius.circular(trackThickness / 2),
- child: ColoredBox(color: Theme.of(context).colorScheme.surfaceVariant),
+ child: ColoredBox(color: Theme.of(context).colorScheme.surfaceContainerHighest),
),
),
AnimatedPositioned.fromRect(
diff --git a/lib/screens/shared/icon_placeholder/widget_icon_placeholder.dart b/lib/screens/shared/icon_placeholder/widget_icon_placeholder.dart
index f11128a..1536f0d 100644
--- a/lib/screens/shared/icon_placeholder/widget_icon_placeholder.dart
+++ b/lib/screens/shared/icon_placeholder/widget_icon_placeholder.dart
@@ -20,15 +20,12 @@ class IconPlaceholder extends StatelessWidget {
children: [
Icon(
icon,
- color: Theme.of(context).colorScheme.onBackground,
+ color: Theme.of(context).colorScheme.onSurface,
),
const SizedBox(height: Dimens.grid8),
Text(
text,
- style: Theme.of(context)
- .textTheme
- .bodyMedium
- ?.copyWith(color: Theme.of(context).colorScheme.onBackground),
+ style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Theme.of(context).colorScheme.onSurface),
textAlign: TextAlign.center,
),
],
diff --git a/lib/screens/shared/release_notes_dialog/flow_dialog_release_notes.dart b/lib/screens/shared/release_notes_dialog/flow_dialog_release_notes.dart
index de7af05..fc00ea2 100644
--- a/lib/screens/shared/release_notes_dialog/flow_dialog_release_notes.dart
+++ b/lib/screens/shared/release_notes_dialog/flow_dialog_release_notes.dart
@@ -21,10 +21,11 @@ class ReleaseNotesFlow extends StatelessWidget {
child: BlocListener(
listener: (context, state) {
if (state is ShowReleaseNotesDialogState) {
+ final bloc = context.read();
showDialog(
context: context,
builder: (_) => ReleaseNotesDialog(version: state.version),
- ).then((_) => context.read().setChangelogVersion());
+ ).then((_) => bloc.setChangelogVersion());
}
},
child: child,
diff --git a/lib/screens/shared/ruler_slider/widget_slider_ruler.dart b/lib/screens/shared/ruler_slider/widget_slider_ruler.dart
index 9932ef2..5075597 100644
--- a/lib/screens/shared/ruler_slider/widget_slider_ruler.dart
+++ b/lib/screens/shared/ruler_slider/widget_slider_ruler.dart
@@ -30,7 +30,7 @@ class RulerSlider extends StatelessWidget {
children: [
Text(
valueAdapter(value),
- style: Theme.of(context).textTheme.labelLarge!.copyWith(color: Theme.of(context).colorScheme.onBackground),
+ style: Theme.of(context).textTheme.labelLarge!.copyWith(color: Theme.of(context).colorScheme.onSurface),
),
const SizedBox(height: Dimens.grid4),
Expanded(
@@ -78,7 +78,7 @@ class _Ruler extends StatelessWidget {
@override
Widget build(BuildContext context) {
final mainTicksFontSize = Theme.of(context).textTheme.bodySmall!.fontSize!;
- final itemsColor = Theme.of(context).colorScheme.onBackground;
+ final itemsColor = Theme.of(context).colorScheme.onSurface;
return LayoutBuilder(
builder: (context, constraints) {
final bool showAllMainTicks =
diff --git a/lib/utils/color_to_int.dart b/lib/utils/color_to_int.dart
new file mode 100644
index 0000000..21e0589
--- /dev/null
+++ b/lib/utils/color_to_int.dart
@@ -0,0 +1,12 @@
+import 'dart:ui';
+
+extension ColorToInt on Color {
+ int toInt() {
+ final a = (this.a * 255).round();
+ final r = (this.r * 255).round();
+ final g = (this.g * 255).round();
+ final b = (this.b * 255).round();
+
+ return (a << 24) | (r << 16) | (g << 8) | b;
+ }
+}
diff --git a/pubspec.lock b/pubspec.lock
new file mode 100644
index 0000000..76cdb7a
--- /dev/null
+++ b/pubspec.lock
@@ -0,0 +1,1541 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ _fe_analyzer_shared:
+ dependency: transitive
+ description:
+ name: _fe_analyzer_shared
+ sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab"
+ url: "https://pub.dev"
+ source: hosted
+ version: "76.0.0"
+ _flutterfire_internals:
+ dependency: transitive
+ description:
+ name: _flutterfire_internals
+ sha256: "7bcb5c5d62b3907fb4a269c0f0843df46760d38e12829a715f2ff1fb492f19ef"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.10"
+ _macros:
+ dependency: transitive
+ description: dart
+ source: sdk
+ version: "0.3.3"
+ analyzer:
+ dependency: transitive
+ description:
+ name: analyzer
+ sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.11.0"
+ ansicolor:
+ dependency: transitive
+ description:
+ name: ansicolor
+ sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.3"
+ app_settings:
+ dependency: "direct main"
+ description:
+ name: app_settings
+ sha256: "09bc7fe0313a507087bec1a3baf555f0576e816a760cbb31813a88890a09d9e5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.1.1"
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.6.1"
+ args:
+ dependency: "direct dev"
+ description:
+ name: args
+ sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.6.0"
+ async:
+ dependency: transitive
+ description:
+ name: async
+ sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.11.0"
+ auto_size_text:
+ dependency: "direct main"
+ description:
+ name: auto_size_text
+ sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.0"
+ bloc:
+ dependency: transitive
+ description:
+ name: bloc
+ sha256: "106842ad6569f0b60297619e9e0b1885c2fb9bf84812935490e6c5275777804e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.1.4"
+ bloc_concurrency:
+ dependency: "direct main"
+ description:
+ name: bloc_concurrency
+ sha256: "456b7a3616a7c1ceb975c14441b3f198bf57d81cb95b7c6de5cb0c60201afcd8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.2.5"
+ bloc_test:
+ dependency: "direct dev"
+ description:
+ name: bloc_test
+ sha256: "165a6ec950d9252ebe36dc5335f2e6eb13055f33d56db0eeb7642768849b43d2"
+ url: "https://pub.dev"
+ source: hosted
+ version: "9.1.7"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ build:
+ dependency: transitive
+ description:
+ name: build
+ sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.2"
+ build_config:
+ dependency: transitive
+ description:
+ name: build_config
+ sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.2"
+ build_daemon:
+ dependency: transitive
+ description:
+ name: build_daemon
+ sha256: "294a2edaf4814a378725bfe6358210196f5ea37af89ecd81bfa32960113d4948"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.3"
+ build_resolvers:
+ dependency: transitive
+ description:
+ name: build_resolvers
+ sha256: "99d3980049739a985cf9b21f30881f46db3ebc62c5b8d5e60e27440876b1ba1e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.3"
+ build_runner:
+ dependency: "direct dev"
+ description:
+ name: build_runner
+ sha256: "74691599a5bc750dc96a6b4bfd48f7d9d66453eab04c7f4063134800d6a5c573"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.14"
+ build_runner_core:
+ dependency: transitive
+ description:
+ name: build_runner_core
+ sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.0.0"
+ built_collection:
+ dependency: transitive
+ description:
+ name: built_collection
+ sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.1.1"
+ built_value:
+ dependency: transitive
+ description:
+ name: built_value
+ sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2"
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.9.3"
+ camera:
+ dependency: "direct main"
+ description:
+ name: camera
+ sha256: "26ff41045772153f222ffffecba711a206f670f5834d40ebf5eed3811692f167"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.11.0+2"
+ camera_android_camerax:
+ dependency: transitive
+ description:
+ name: camera_android_camerax
+ sha256: abcfa1ac32bd03116b4cfda7e8223ab391f01966e65823c064afe388550d1b3d
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.6.10+3"
+ camera_avfoundation:
+ dependency: transitive
+ description:
+ name: camera_avfoundation
+ sha256: c3038e6e72e284b14ad246a419f26908c08f8886d114cb8a2e351988439bfa68
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.9.17+6"
+ camera_platform_interface:
+ dependency: transitive
+ description:
+ name: camera_platform_interface
+ sha256: b3ede1f171532e0d83111fe0980b46d17f1aa9788a07a2fbed07366bbdbb9061
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.8.0"
+ camera_web:
+ dependency: transitive
+ description:
+ name: camera_web
+ sha256: "595f28c89d1fb62d77c73c633193755b781c6d2e0ebcd8dc25b763b514e6ba8f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.5"
+ characters:
+ dependency: transitive
+ description:
+ name: characters
+ sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
+ checked_yaml:
+ dependency: transitive
+ description:
+ name: checked_yaml
+ sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.3"
+ clipboard:
+ dependency: "direct main"
+ description:
+ name: clipboard
+ sha256: "2ec38f0e59878008ceca0ab122e4bfde98847f88ef0f83331362ba4521f565a9"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.3"
+ clock:
+ dependency: transitive
+ description:
+ name: clock
+ sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ cloud_firestore:
+ dependency: transitive
+ description:
+ name: cloud_firestore
+ sha256: "666ae6914f5d9dde04d7fb49c5983d3bf7b887021a79a3ac17de2e95386b8006"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.12.1"
+ cloud_firestore_platform_interface:
+ dependency: transitive
+ description:
+ name: cloud_firestore_platform_interface
+ sha256: f1a9436bc0d7f49e60df33b5eb872772733646d4f211516220a1f6006c8177f5
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.0.2"
+ cloud_firestore_web:
+ dependency: transitive
+ description:
+ name: cloud_firestore_web
+ sha256: "8df1e484d57f771242c2d8b3a534b921dfb0ba144a1cd441f23b1c7c4f33c3a1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.8.2"
+ code_builder:
+ dependency: transitive
+ description:
+ name: code_builder
+ sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.10.1"
+ collection:
+ dependency: "direct main"
+ description:
+ name: collection
+ sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.19.0"
+ convert:
+ dependency: transitive
+ description:
+ name: convert
+ sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.2"
+ coverage:
+ dependency: transitive
+ description:
+ name: coverage
+ sha256: e3493833ea012784c740e341952298f1cc77f1f01b1bbc3eb4eecf6984fb7f43
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.11.1"
+ cross_file:
+ dependency: transitive
+ description:
+ name: cross_file
+ sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.4+2"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.6"
+ csslib:
+ dependency: transitive
+ description:
+ name: csslib
+ sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.2"
+ dart_style:
+ dependency: transitive
+ description:
+ name: dart_style
+ sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.7"
+ device_info_plus:
+ dependency: transitive
+ description:
+ name: device_info_plus
+ sha256: "4fa68e53e26ab17b70ca39f072c285562cfc1589df5bb1e9295db90f6645f431"
+ url: "https://pub.dev"
+ source: hosted
+ version: "11.2.0"
+ device_info_plus_platform_interface:
+ dependency: transitive
+ description:
+ name: device_info_plus_platform_interface
+ sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.2"
+ diff_match_patch:
+ dependency: transitive
+ description:
+ name: diff_match_patch
+ sha256: "2efc9e6e8f449d0abe15be240e2c2a3bcd977c8d126cfd70598aee60af35c0a4"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.4.1"
+ dynamic_color:
+ dependency: "direct main"
+ description:
+ name: dynamic_color
+ sha256: eae98052fa6e2826bdac3dd2e921c6ce2903be15c6b7f8b6d8a5d49b5086298d
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.7.0"
+ exif:
+ dependency: "direct main"
+ description:
+ name: exif
+ sha256: a7980fdb3b7ffcd0b035e5b8a5e1eef7cadfe90ea6a4e85ebb62f87b96c7a172
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.3.0"
+ fake_async:
+ dependency: transitive
+ description:
+ name: fake_async
+ sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.1"
+ ffi:
+ dependency: transitive
+ description:
+ name: ffi
+ sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.3"
+ file:
+ dependency: transitive
+ description:
+ name: file
+ sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.0"
+ firebase_analytics:
+ dependency: "direct main"
+ description:
+ name: firebase_analytics
+ sha256: fd94117b8160022a57af063dcd856fae2d9a29b6e3bbfcb078e77b87ccecbd3f
+ url: "https://pub.dev"
+ source: hosted
+ version: "10.6.2"
+ firebase_analytics_platform_interface:
+ dependency: transitive
+ description:
+ name: firebase_analytics_platform_interface
+ sha256: "42bb0ffc4087dbbfdc7e89514c1b86e55fbbdebd42fdb59efda05f8dd2606a62"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.7.4"
+ firebase_analytics_web:
+ dependency: transitive
+ description:
+ name: firebase_analytics_web
+ sha256: ad82db058df608974900ee90afac88fa1cc1d2079bfb62f780d1ad7df6505161
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.5.5+4"
+ firebase_auth:
+ dependency: transitive
+ description:
+ name: firebase_auth
+ sha256: ee5e4f6e79483d1b39e2fe81cdef74f4c295c9865e150aefacd615eea96d3e7b
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.12.0"
+ firebase_auth_platform_interface:
+ dependency: transitive
+ description:
+ name: firebase_auth_platform_interface
+ sha256: a664a8f1dbf73e6a56fd41364bcd0ad24f8d9d57428b365199dc795ee52b7d27
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.2"
+ firebase_auth_web:
+ dependency: transitive
+ description:
+ name: firebase_auth_web
+ sha256: "6a3c8c09c9ffcfea83ac4ce3d18d8b4c467c77d57713b2d786fd69ece5bb4a48"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.8.5"
+ firebase_core:
+ dependency: "direct main"
+ description:
+ name: firebase_core
+ sha256: "37299e4907391d7fac8c7ea059bb3292768cc07b72b6c6c777675cc58da2ef4d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.20.0"
+ firebase_core_platform_interface:
+ dependency: transitive
+ description:
+ name: firebase_core_platform_interface
+ sha256: d7253d255ff10f85cfd2adaba9ac17bae878fa3ba577462451163bd9f1d1f0bf
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.4.0"
+ firebase_core_web:
+ dependency: transitive
+ description:
+ name: firebase_core_web
+ sha256: fbc008cf390d909b823763064b63afefe9f02d8afdb13eb3f485b871afee956b
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.19.0"
+ firebase_crashlytics:
+ dependency: "direct main"
+ description:
+ name: firebase_crashlytics
+ sha256: d279ec1a3377df3762778e55ded07fe6d169d216713a44bbc624ae6218e35c3c
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.4.2"
+ firebase_crashlytics_platform_interface:
+ dependency: transitive
+ description:
+ name: firebase_crashlytics_platform_interface
+ sha256: "8a82ce2879e359134f5ce786048737b6385a65ec696d68cf0c27134a1c933676"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.6.10"
+ firebase_remote_config:
+ dependency: "direct main"
+ description:
+ name: firebase_remote_config
+ sha256: d701609add3ff2a79bbf36610563cd599f23e49f729933d944210a9aaf6d454a
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.3.2"
+ firebase_remote_config_platform_interface:
+ dependency: transitive
+ description:
+ name: firebase_remote_config_platform_interface
+ sha256: "262bf51f73ef18e5e46ab626c2e5c8d47dc41c96419b74e70b6359a001f3b657"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.10"
+ firebase_remote_config_web:
+ dependency: transitive
+ description:
+ name: firebase_remote_config_web
+ sha256: d752bf5ea858d7e77e3906e23af59be083201b370a1ec849b295edb1d07000b1
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.10"
+ fixnum:
+ dependency: transitive
+ description:
+ name: fixnum
+ sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ flutter:
+ dependency: "direct main"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_bloc:
+ dependency: "direct main"
+ description:
+ name: flutter_bloc
+ sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.1.6"
+ flutter_driver:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_localizations:
+ dependency: "direct main"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_native_splash:
+ dependency: "direct main"
+ description:
+ name: flutter_native_splash
+ sha256: "7062602e0dbd29141fb8eb19220b5871ca650be5197ab9c1f193a28b17537bc7"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.4"
+ flutter_plugin_android_lifecycle:
+ dependency: transitive
+ description:
+ name: flutter_plugin_android_lifecycle
+ sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.24"
+ flutter_secure_storage:
+ dependency: transitive
+ description:
+ name: flutter_secure_storage
+ sha256: "98352186ee7ad3639ccc77ad7924b773ff6883076ab952437d20f18a61f0a7c5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.0.0"
+ flutter_secure_storage_linux:
+ dependency: transitive
+ description:
+ name: flutter_secure_storage_linux
+ sha256: bf7404619d7ab5c0a1151d7c4e802edad8f33535abfbeff2f9e1fe1274e2d705
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.2"
+ flutter_secure_storage_macos:
+ dependency: transitive
+ description:
+ name: flutter_secure_storage_macos
+ sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.3"
+ flutter_secure_storage_platform_interface:
+ dependency: transitive
+ description:
+ name: flutter_secure_storage_platform_interface
+ sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.2"
+ flutter_secure_storage_web:
+ dependency: transitive
+ description:
+ name: flutter_secure_storage_web
+ sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ flutter_secure_storage_windows:
+ dependency: transitive
+ description:
+ name: flutter_secure_storage_windows
+ sha256: "38f9501c7cb6f38961ef0e1eacacee2b2d4715c63cc83fe56449c4d3d0b47255"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ flutter_test:
+ dependency: "direct dev"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_web_plugins:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ frontend_server_client:
+ dependency: transitive
+ description:
+ name: frontend_server_client
+ sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.0"
+ fuchsia_remote_debug_protocol:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ glob:
+ dependency: transitive
+ description:
+ name: glob
+ sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ golden_toolkit:
+ dependency: "direct dev"
+ description:
+ name: golden_toolkit
+ sha256: "8f74adab33154fe7b731395782797021f97d2edc52f7bfb85ff4f1b5c4a215f0"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.15.0"
+ google_fonts:
+ dependency: "direct dev"
+ description:
+ name: google_fonts
+ sha256: "6b6f10f0ce3c42f6552d1c70d2c28d764cf22bb487f50f66cca31dcd5194f4d6"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.4"
+ graphs:
+ dependency: transitive
+ description:
+ name: graphs
+ sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.2"
+ html:
+ dependency: transitive
+ description:
+ name: html
+ sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.15.5"
+ http:
+ dependency: transitive
+ description:
+ name: http
+ sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.13.5"
+ http_multi_server:
+ dependency: transitive
+ description:
+ name: http_multi_server
+ sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.2"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.1.2"
+ image:
+ dependency: "direct dev"
+ description:
+ name: image
+ sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.3.0"
+ in_app_purchase:
+ dependency: transitive
+ description:
+ name: in_app_purchase
+ sha256: bdda02b5b11b56d5e29c7f0c57c433db3452b0c8ce1c37cbfcf1de52946efd9f
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.11"
+ in_app_purchase_android:
+ dependency: transitive
+ description:
+ name: in_app_purchase_android
+ sha256: c4b84caa4e2c7ffebda444c5033fd8423cc3a45a6e1066929bbbcd4daf665db5
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.0+15"
+ in_app_purchase_platform_interface:
+ dependency: transitive
+ description:
+ name: in_app_purchase_platform_interface
+ sha256: "1d353d38251da5b9fea6635c0ebfc6bb17a2d28d0e86ea5e083bf64244f1fb4c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
+ in_app_purchase_storekit:
+ dependency: transitive
+ description:
+ name: in_app_purchase_storekit
+ sha256: "250b3865da1f4abf0d0e1eda9556734ee22ab5ebfe47a59227d8d9aeaa1c03e8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.20+2"
+ integration_test:
+ dependency: "direct dev"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ intl:
+ dependency: "direct main"
+ description:
+ name: intl
+ sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.19.0"
+ intl_utils:
+ dependency: "direct main"
+ description:
+ name: intl_utils
+ sha256: c2b1f5c72c25512cbeef5ab015c008fc50fe7e04813ba5541c25272300484bf4
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.8.7"
+ io:
+ dependency: transitive
+ description:
+ name: io
+ sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.5"
+ js:
+ dependency: transitive
+ description:
+ name: js
+ sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.6.7"
+ json_annotation:
+ dependency: transitive
+ description:
+ name: json_annotation
+ sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.9.0"
+ leak_tracker:
+ dependency: transitive
+ description:
+ name: leak_tracker
+ sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
+ url: "https://pub.dev"
+ source: hosted
+ version: "10.0.7"
+ leak_tracker_flutter_testing:
+ dependency: transitive
+ description:
+ name: leak_tracker_flutter_testing
+ sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.8"
+ leak_tracker_testing:
+ dependency: transitive
+ description:
+ name: leak_tracker_testing
+ sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.1"
+ light_sensor:
+ dependency: "direct main"
+ description:
+ name: light_sensor
+ sha256: "669c71e5f4484a237f1f749c1b602b72d3c8b54977d7d0200d189356b32ec96e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.0"
+ lint:
+ dependency: "direct dev"
+ description:
+ name: lint
+ sha256: d758a5211fce7fd3f5e316f804daefecdc34c7e53559716125e6da7388ae8565
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.0"
+ logging:
+ dependency: "direct dev"
+ description:
+ name: logging
+ sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
+ m3_lightmeter_iap:
+ dependency: "direct main"
+ description:
+ path: "."
+ ref: "v2.1.0"
+ resolved-ref: "451a1fc38f3eb1aedff35e550c169fddd3c7c857"
+ url: "https://github.com/vodemn/m3_lightmeter_iap"
+ source: git
+ version: "2.1.0+27"
+ m3_lightmeter_resources:
+ dependency: "direct main"
+ description:
+ path: "."
+ ref: "v2.1.0"
+ resolved-ref: "0e6eefe534adce851df639dcd28463a9089e5b92"
+ url: "https://github.com/vodemn/m3_lightmeter_resources"
+ source: git
+ version: "2.1.0+9"
+ macros:
+ dependency: transitive
+ description:
+ name: macros
+ sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.3-main.0"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.12.16+1"
+ material_color_utilities:
+ dependency: "direct main"
+ description:
+ name: material_color_utilities
+ sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.11.1"
+ meta:
+ dependency: "direct dev"
+ description:
+ name: meta
+ sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.15.0"
+ mime:
+ dependency: transitive
+ description:
+ name: mime
+ sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.0"
+ mocktail:
+ dependency: "direct dev"
+ description:
+ name: mocktail
+ sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ nested:
+ dependency: transitive
+ description:
+ name: nested
+ sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.0"
+ node_preamble:
+ dependency: transitive
+ description:
+ name: node_preamble
+ sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.2"
+ package_config:
+ dependency: transitive
+ description:
+ name: package_config
+ sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ package_info_plus:
+ dependency: "direct main"
+ description:
+ name: package_info_plus
+ sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.2.0"
+ package_info_plus_platform_interface:
+ dependency: transitive
+ description:
+ name: package_info_plus_platform_interface
+ sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.9.0"
+ path_provider:
+ dependency: transitive
+ description:
+ name: path_provider
+ sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.5"
+ path_provider_android:
+ dependency: transitive
+ description:
+ name: path_provider_android
+ sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.15"
+ path_provider_foundation:
+ dependency: transitive
+ description:
+ name: path_provider_foundation
+ sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ path_provider_linux:
+ dependency: transitive
+ description:
+ name: path_provider_linux
+ sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.1"
+ path_provider_platform_interface:
+ dependency: transitive
+ description:
+ name: path_provider_platform_interface
+ sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ path_provider_windows:
+ dependency: transitive
+ description:
+ name: path_provider_windows
+ sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.0"
+ permission_handler:
+ dependency: "direct main"
+ description:
+ name: permission_handler
+ sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb"
+ url: "https://pub.dev"
+ source: hosted
+ version: "11.3.1"
+ permission_handler_android:
+ dependency: transitive
+ description:
+ name: permission_handler_android
+ sha256: "71bbecfee799e65aff7c744761a57e817e73b738fedf62ab7afd5593da21f9f1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "12.0.13"
+ permission_handler_apple:
+ dependency: transitive
+ description:
+ name: permission_handler_apple
+ sha256: e6f6d73b12438ef13e648c4ae56bd106ec60d17e90a59c4545db6781229082a0
+ url: "https://pub.dev"
+ source: hosted
+ version: "9.4.5"
+ permission_handler_html:
+ dependency: transitive
+ description:
+ name: permission_handler_html
+ sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.3+5"
+ permission_handler_platform_interface:
+ dependency: transitive
+ description:
+ name: permission_handler_platform_interface
+ sha256: e9c8eadee926c4532d0305dff94b85bf961f16759c3af791486613152af4b4f9
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.2.3"
+ permission_handler_windows:
+ dependency: transitive
+ description:
+ name: permission_handler_windows
+ sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.2.1"
+ petitparser:
+ dependency: transitive
+ description:
+ name: petitparser
+ sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.0.2"
+ platform:
+ dependency: "direct main"
+ description:
+ name: platform
+ sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.5"
+ plugin_platform_interface:
+ dependency: transitive
+ description:
+ name: plugin_platform_interface
+ sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.8"
+ pool:
+ dependency: transitive
+ description:
+ name: pool
+ sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.5.1"
+ process:
+ dependency: transitive
+ description:
+ name: process
+ sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.0.2"
+ provider:
+ dependency: transitive
+ description:
+ name: provider
+ sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.2"
+ pub_semver:
+ dependency: transitive
+ description:
+ name: pub_semver
+ sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.5"
+ pubspec_parse:
+ dependency: transitive
+ description:
+ name: pubspec_parse
+ sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
+ shared_preferences:
+ dependency: "direct main"
+ description:
+ name: shared_preferences
+ sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.0"
+ shared_preferences_android:
+ dependency: transitive
+ description:
+ name: shared_preferences_android
+ sha256: "02a7d8a9ef346c9af715811b01fbd8e27845ad2c41148eefd31321471b41863d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.0"
+ shared_preferences_foundation:
+ dependency: transitive
+ description:
+ name: shared_preferences_foundation
+ sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.5.4"
+ shared_preferences_linux:
+ dependency: transitive
+ description:
+ name: shared_preferences_linux
+ sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ shared_preferences_platform_interface:
+ dependency: transitive
+ description:
+ name: shared_preferences_platform_interface
+ sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ shared_preferences_web:
+ dependency: transitive
+ description:
+ name: shared_preferences_web
+ sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.2"
+ shared_preferences_windows:
+ dependency: transitive
+ description:
+ name: shared_preferences_windows
+ sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ shelf:
+ dependency: transitive
+ description:
+ name: shelf
+ sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.2"
+ shelf_packages_handler:
+ dependency: transitive
+ description:
+ name: shelf_packages_handler
+ sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.2"
+ shelf_static:
+ dependency: transitive
+ description:
+ name: shelf_static
+ sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.3"
+ shelf_web_socket:
+ dependency: transitive
+ description:
+ name: shelf_web_socket
+ sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
+ sky_engine:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ source_map_stack_trace:
+ dependency: transitive
+ description:
+ name: source_map_stack_trace
+ sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ source_maps:
+ dependency: transitive
+ description:
+ name: source_maps
+ sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.10.13"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.10.0"
+ sprintf:
+ dependency: transitive
+ description:
+ name: sprintf
+ sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.0"
+ sqflite:
+ dependency: transitive
+ description:
+ name: sqflite
+ sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.0"
+ sqflite_common:
+ dependency: transitive
+ description:
+ name: sqflite_common
+ sha256: "761b9740ecbd4d3e66b8916d784e581861fd3c3553eda85e167bc49fdb68f709"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.5.4+6"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.12.0"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ stream_transform:
+ dependency: transitive
+ description:
+ name: stream_transform
+ sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
+ sync_http:
+ dependency: transitive
+ description:
+ name: sync_http
+ sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.1"
+ synchronized:
+ dependency: transitive
+ description:
+ name: synchronized
+ sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.3.0+3"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ test:
+ dependency: "direct dev"
+ description:
+ name: test
+ sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.25.8"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.3"
+ test_core:
+ dependency: transitive
+ description:
+ name: test_core
+ sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.6.5"
+ timing:
+ dependency: transitive
+ description:
+ name: timing
+ sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.2"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
+ universal_io:
+ dependency: transitive
+ description:
+ name: universal_io
+ sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.2"
+ url_launcher:
+ dependency: "direct main"
+ description:
+ name: url_launcher
+ sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.3.1"
+ url_launcher_android:
+ dependency: transitive
+ description:
+ name: url_launcher_android
+ sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.3.14"
+ url_launcher_ios:
+ dependency: "direct main"
+ description:
+ name: url_launcher_ios
+ sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.3.2"
+ url_launcher_linux:
+ dependency: transitive
+ description:
+ name: url_launcher_linux
+ sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.1"
+ url_launcher_macos:
+ dependency: transitive
+ description:
+ name: url_launcher_macos
+ sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.2"
+ url_launcher_platform_interface:
+ dependency: transitive
+ description:
+ name: url_launcher_platform_interface
+ sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.2"
+ url_launcher_web:
+ dependency: transitive
+ description:
+ name: url_launcher_web
+ sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.3"
+ url_launcher_windows:
+ dependency: transitive
+ description:
+ name: url_launcher_windows
+ sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.3"
+ uuid:
+ dependency: "direct main"
+ description:
+ name: uuid
+ sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.7"
+ vector_math:
+ dependency: transitive
+ description:
+ name: vector_math
+ sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
+ vibration:
+ dependency: "direct main"
+ description:
+ name: vibration
+ sha256: f0af02af2d63132135ae0332a3e54d5de718e214ee94c4f082176ef6ce624a4b
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
+ vibration_platform_interface:
+ dependency: transitive
+ description:
+ name: vibration_platform_interface
+ sha256: f66b39aab2447038978c16f3d6f77228e49ef5717556e3da02313e044e4a7600
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.0.2"
+ vm_service:
+ dependency: transitive
+ description:
+ name: vm_service
+ sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
+ url: "https://pub.dev"
+ source: hosted
+ version: "14.3.0"
+ watcher:
+ dependency: transitive
+ description:
+ name: watcher
+ sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ web:
+ dependency: transitive
+ description:
+ name: web
+ sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
+ web_socket:
+ dependency: transitive
+ description:
+ name: web_socket
+ sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.6"
+ web_socket_channel:
+ dependency: transitive
+ description:
+ name: web_socket_channel
+ sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.1"
+ webdriver:
+ dependency: transitive
+ description:
+ name: webdriver
+ sha256: "3d773670966f02a646319410766d3b5e1037efb7f07cc68f844d5e06cd4d61c8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.4"
+ webkit_inspection_protocol:
+ dependency: transitive
+ description:
+ name: webkit_inspection_protocol
+ sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ win32:
+ dependency: transitive
+ description:
+ name: win32
+ sha256: "154360849a56b7b67331c21f09a386562d88903f90a1099c5987afc1912e1f29"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.10.0"
+ win32_registry:
+ dependency: transitive
+ description:
+ name: win32_registry
+ sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.5"
+ xdg_directories:
+ dependency: transitive
+ description:
+ name: xdg_directories
+ sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
+ xml:
+ dependency: transitive
+ description:
+ name: xml
+ sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.5.0"
+ yaml:
+ dependency: transitive
+ description:
+ name: yaml
+ sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.3"
+sdks:
+ dart: ">=3.6.0 <4.0.0"
+ flutter: ">=3.24.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index ddb3f7b..854ed63 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -7,27 +7,26 @@ environment:
sdk: ">=3.0.0 <4.0.0"
dependencies:
- app_settings: 4.2.0
+ app_settings: ^5.1.1
auto_size_text: 3.0.0
- bloc_concurrency: 0.2.2
- camera: 0.10.5+2
- camera_android_camerax: 0.6.1+1
+ bloc_concurrency: ^0.2.5
+ camera: ^0.11.0+2
clipboard: 0.1.3
collection: any
dynamic_color: 1.7.0
- exif: 3.1.4
+ exif: ^3.3.0
firebase_analytics: 10.6.2
firebase_core: 2.20.0
firebase_crashlytics: 3.4.2
firebase_remote_config: 4.3.2
flutter:
sdk: flutter
- flutter_bloc: 8.1.3
+ flutter_bloc: ^8.1.6
flutter_localizations:
sdk: flutter
- flutter_native_splash: 2.3.5
- intl: 0.18.1
- intl_utils: 2.8.2
+ flutter_native_splash: ^2.4.4
+ intl: ^0.19.0
+ intl_utils: ^2.8.7
light_sensor: 3.0.0
m3_lightmeter_iap:
git:
@@ -39,29 +38,30 @@ dependencies:
ref: v2.1.0
material_color_utilities: 0.5.0
package_info_plus: 4.2.0
- permission_handler: 10.4.3
- platform: 3.1.0
+ permission_handler: ^11.3.1
+ platform: ^3.1.5
shared_preferences: 2.2.0
- url_launcher: 6.1.12
+ url_launcher:
+ url_launcher_ios: ^6.3.2
uuid: 3.0.7
- vibration: 1.8.1
+ vibration: ^2.0.1
dev_dependencies:
- args: 2.5.0
- bloc_test: 9.1.3
- build_runner: 2.4.6
+ args: ^2.6.0
+ bloc_test: ^9.1.7
+ build_runner: ^2.4.14
flutter_test:
sdk: flutter
golden_toolkit: 0.15.0
- google_fonts: 3.0.1
- image: 4.1.7
+ google_fonts: ^4.0.4
+ image: ^4.3.0
integration_test:
sdk: flutter
- lint: 2.1.2
- logging: 1.2.0
- meta: 1.9.1
- mocktail: 0.3.0
- test: 1.24.3
+ lint: ^2.3.0
+ logging: ^1.3.0
+ meta: ^1.15.0
+ mocktail: ^1.0.4
+ test: ^1.25.8
dependency_overrides:
material_color_utilities: 0.11.1
diff --git a/screenshots/generate_screenshots.dart b/screenshots/generate_screenshots.dart
index a47b9e9..d80159c 100644
--- a/screenshots/generate_screenshots.dart
+++ b/screenshots/generate_screenshots.dart
@@ -22,6 +22,7 @@ import 'package:lightmeter/screens/metering/screen_metering.dart';
import 'package:lightmeter/screens/settings/screen_settings.dart';
import 'package:lightmeter/screens/shared/animated_circular_button/widget_button_circular_animated.dart';
import 'package:lightmeter/screens/timer/screen_timer.dart';
+import 'package:lightmeter/utils/color_to_int.dart';
import 'package:lightmeter/utils/platform_utils.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
import 'package:shared_preferences/shared_preferences.dart';
@@ -77,7 +78,7 @@ void main() {
/// Theme settings
UserPreferencesService.themeTypeKey: theme.index,
- UserPreferencesService.primaryColorKey: color.value,
+ UserPreferencesService.primaryColorKey: color.toInt(),
UserPreferencesService.dynamicColorKey: false,
UserPreferencesService.seenChangelogVersionKey: await const PlatformUtils().version,
@@ -190,7 +191,7 @@ extension on WidgetTester {
name: name,
deviceName: const String.fromEnvironment('deviceName'),
platformFolder: _platformFolder,
- backgroundColor: backgroundColor.value.toRadixString(16),
+ backgroundColor: backgroundColor.toInt().toRadixString(16),
isDark: theme.brightness == Brightness.dark,
).toString(),
);
diff --git a/test/application_mock.dart b/test/application_mock.dart
index 8475389..7034137 100644
--- a/test/application_mock.dart
+++ b/test/application_mock.dart
@@ -47,7 +47,7 @@ class WidgetTestApplicationMock extends StatelessWidget {
],
supportedLocales: S.delegate.supportedLocales,
builder: (context, child) => MediaQuery(
- data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
+ data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling),
child: child!,
),
home: Scaffold(body: child),
@@ -124,7 +124,7 @@ class _GoldenTestApplicationMockState extends State {
],
supportedLocales: S.delegate.supportedLocales,
builder: (context, child) => MediaQuery(
- data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
+ data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling),
child: child!,
),
home: widget.child,
diff --git a/test/screens/lightmeter_pro/goldens/lightmeter_pro_screen.png b/test/screens/lightmeter_pro/goldens/lightmeter_pro_screen.png
index 5ad139a..ab9d347 100644
Binary files a/test/screens/lightmeter_pro/goldens/lightmeter_pro_screen.png and b/test/screens/lightmeter_pro/goldens/lightmeter_pro_screen.png differ
diff --git a/test/screens/metering/goldens/metering_screen.png b/test/screens/metering/goldens/metering_screen.png
index 4810bc9..fd0be29 100644
Binary files a/test/screens/metering/goldens/metering_screen.png and b/test/screens/metering/goldens/metering_screen.png differ
diff --git a/test/screens/settings/goldens/settings_screen.png b/test/screens/settings/goldens/settings_screen.png
index ffe5fe6..c23e484 100644
Binary files a/test/screens/settings/goldens/settings_screen.png and b/test/screens/settings/goldens/settings_screen.png differ
diff --git a/test/screens/timer/goldens/timer_screen.png b/test/screens/timer/goldens/timer_screen.png
index cb3aa24..96c3632 100644
Binary files a/test/screens/timer/goldens/timer_screen.png and b/test/screens/timer/goldens/timer_screen.png differ