From 0d47bf3d4b1389315ad8545447c55add6b1b210f Mon Sep 17 00:00:00 2001 From: mohsen zamani Date: Thu, 23 Feb 2023 11:42:09 +0330 Subject: [PATCH] first commit --- android/build.gradle | 4 +- .../notifiers/image_splitter_notifier.dart | 14 +- .../states/image_splitter_state.freezed.dart | 133 +++---- lib/main.dart | 13 +- lib/res/strings.dart | 5 - .../level_list/screen/level_list_screen.dart | 4 +- lib/screens/photo/photo_screen.dart | 75 +--- lib/screens/photo/photo_screen_large.dart | 225 ++++++------ lib/screens/photo/photo_screen_medium.dart | 17 - lib/screens/photo/photo_screen_small.dart | 186 ++++------ .../photo_screen/pick_image_button.dart | 4 +- .../puzzle_widget/puzzle_board.dart | 5 +- macos/Flutter/GeneratedPluginRegistrant.swift | 2 +- pubspec.lock | 332 +++++++++--------- 14 files changed, 443 insertions(+), 576 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 24047dc..2099b3b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.7.20' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:4.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/lib/application/notifiers/image_splitter_notifier.dart b/lib/application/notifiers/image_splitter_notifier.dart index 4d128a2..a16ea3c 100644 --- a/lib/application/notifiers/image_splitter_notifier.dart +++ b/lib/application/notifiers/image_splitter_notifier.dart @@ -13,7 +13,7 @@ class ImageSplitterNotifier extends StateNotifier { ImageSplitterNotifier(this._splitter) : super(const ImageSplitterState()); - getInitialImages({required int puzzleSize}) async { + void getInitialImages({required int puzzleSize}) async { state = const ImageSplitterState.generating(); try { @@ -21,19 +21,16 @@ class ImageSplitterNotifier extends StateNotifier { final imageBytes = data.buffer.asUint8List(); final _splitter = ImageSplitter(); - final palette = - await _splitter.getImagePalette(const AssetImage(defaultImagePath)); + final palette = await _splitter.getImagePalette(const AssetImage(defaultImagePath)); final images = await _splitter.runSplitterIsolate(imageBytes, puzzleSize); - - state = ImageSplitterState.complete( - Image.asset(defaultImagePath), images, palette); + state = ImageSplitterState.complete(Image.asset(defaultImagePath), images, palette); } catch (e) { state = ImageSplitterState.error(message: e.toString()); } } - generateImages({required ImagePicker picker, required int puzzleSize}) async { + void generateImages({required ImagePicker picker, required int puzzleSize}) async { state = const ImageSplitterState.generating(); try { @@ -44,8 +41,7 @@ class ImageSplitterNotifier extends StateNotifier { final imageBytes = imageBytesPalette.item2; final palette = imageBytesPalette.item3; log('Image tuple retrieved'); - final images = - await _splitter.runSplitterIsolate(imageBytes, puzzleSize); + final images = await _splitter.runSplitterIsolate(imageBytes, puzzleSize); state = ImageSplitterState.complete(image, images, palette); } } catch (e) { diff --git a/lib/application/states/image_splitter_state.freezed.dart b/lib/application/states/image_splitter_state.freezed.dart index 837309c..036b105 100644 --- a/lib/application/states/image_splitter_state.freezed.dart +++ b/lib/application/states/image_splitter_state.freezed.dart @@ -26,8 +26,7 @@ class _$ImageSplitterStateTearOff { return const ImageSplitterGenerating(); } - ImageSplitterComplete complete( - Image image, List images, PaletteGenerator palette) { + ImageSplitterComplete complete(Image image, List images, PaletteGenerator palette) { return ImageSplitterComplete( image, images, @@ -51,18 +50,16 @@ mixin _$ImageSplitterState { TResult when( TResult Function() $default, { required TResult Function() generating, - required TResult Function( - Image image, List images, PaletteGenerator palette) - complete, + required TResult Function(Image image, List images, PaletteGenerator palette) complete, required TResult Function(String? message) error, }) => throw _privateConstructorUsedError; + @optionalTypeArgs TResult? whenOrNull( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, }) => throw _privateConstructorUsedError; @@ -70,12 +67,12 @@ mixin _$ImageSplitterState { TResult maybeWhen( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, required TResult orElse(), }) => throw _privateConstructorUsedError; + @optionalTypeArgs TResult map( TResult Function(ImageSplitterIdle value) $default, { @@ -84,6 +81,7 @@ mixin _$ImageSplitterState { required TResult Function(ImageSplitterError value) error, }) => throw _privateConstructorUsedError; + @optionalTypeArgs TResult? mapOrNull( TResult Function(ImageSplitterIdle value)? $default, { @@ -105,34 +103,30 @@ mixin _$ImageSplitterState { /// @nodoc abstract class $ImageSplitterStateCopyWith<$Res> { - factory $ImageSplitterStateCopyWith( - ImageSplitterState value, $Res Function(ImageSplitterState) then) = + factory $ImageSplitterStateCopyWith(ImageSplitterState value, $Res Function(ImageSplitterState) then) = _$ImageSplitterStateCopyWithImpl<$Res>; } /// @nodoc -class _$ImageSplitterStateCopyWithImpl<$Res> - implements $ImageSplitterStateCopyWith<$Res> { +class _$ImageSplitterStateCopyWithImpl<$Res> implements $ImageSplitterStateCopyWith<$Res> { _$ImageSplitterStateCopyWithImpl(this._value, this._then); final ImageSplitterState _value; + // ignore: unused_field final $Res Function(ImageSplitterState) _then; } /// @nodoc abstract class $ImageSplitterIdleCopyWith<$Res> { - factory $ImageSplitterIdleCopyWith( - ImageSplitterIdle value, $Res Function(ImageSplitterIdle) then) = + factory $ImageSplitterIdleCopyWith(ImageSplitterIdle value, $Res Function(ImageSplitterIdle) then) = _$ImageSplitterIdleCopyWithImpl<$Res>; } /// @nodoc -class _$ImageSplitterIdleCopyWithImpl<$Res> - extends _$ImageSplitterStateCopyWithImpl<$Res> +class _$ImageSplitterIdleCopyWithImpl<$Res> extends _$ImageSplitterStateCopyWithImpl<$Res> implements $ImageSplitterIdleCopyWith<$Res> { - _$ImageSplitterIdleCopyWithImpl( - ImageSplitterIdle _value, $Res Function(ImageSplitterIdle) _then) + _$ImageSplitterIdleCopyWithImpl(ImageSplitterIdle _value, $Res Function(ImageSplitterIdle) _then) : super(_value, (v) => _then(v as ImageSplitterIdle)); @override @@ -151,8 +145,7 @@ class _$ImageSplitterIdle implements ImageSplitterIdle { @override bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && other is ImageSplitterIdle); + return identical(this, other) || (other.runtimeType == runtimeType && other is ImageSplitterIdle); } @override @@ -163,9 +156,7 @@ class _$ImageSplitterIdle implements ImageSplitterIdle { TResult when( TResult Function() $default, { required TResult Function() generating, - required TResult Function( - Image image, List images, PaletteGenerator palette) - complete, + required TResult Function(Image image, List images, PaletteGenerator palette) complete, required TResult Function(String? message) error, }) { return $default(); @@ -176,8 +167,7 @@ class _$ImageSplitterIdle implements ImageSplitterIdle { TResult? whenOrNull( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, }) { return $default?.call(); @@ -188,8 +178,7 @@ class _$ImageSplitterIdle implements ImageSplitterIdle { TResult maybeWhen( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, required TResult orElse(), }) { @@ -243,17 +232,14 @@ abstract class ImageSplitterIdle implements ImageSplitterState { /// @nodoc abstract class $ImageSplitterGeneratingCopyWith<$Res> { - factory $ImageSplitterGeneratingCopyWith(ImageSplitterGenerating value, - $Res Function(ImageSplitterGenerating) then) = + factory $ImageSplitterGeneratingCopyWith(ImageSplitterGenerating value, $Res Function(ImageSplitterGenerating) then) = _$ImageSplitterGeneratingCopyWithImpl<$Res>; } /// @nodoc -class _$ImageSplitterGeneratingCopyWithImpl<$Res> - extends _$ImageSplitterStateCopyWithImpl<$Res> +class _$ImageSplitterGeneratingCopyWithImpl<$Res> extends _$ImageSplitterStateCopyWithImpl<$Res> implements $ImageSplitterGeneratingCopyWith<$Res> { - _$ImageSplitterGeneratingCopyWithImpl(ImageSplitterGenerating _value, - $Res Function(ImageSplitterGenerating) _then) + _$ImageSplitterGeneratingCopyWithImpl(ImageSplitterGenerating _value, $Res Function(ImageSplitterGenerating) _then) : super(_value, (v) => _then(v as ImageSplitterGenerating)); @override @@ -272,8 +258,7 @@ class _$ImageSplitterGenerating implements ImageSplitterGenerating { @override bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && other is ImageSplitterGenerating); + return identical(this, other) || (other.runtimeType == runtimeType && other is ImageSplitterGenerating); } @override @@ -284,9 +269,7 @@ class _$ImageSplitterGenerating implements ImageSplitterGenerating { TResult when( TResult Function() $default, { required TResult Function() generating, - required TResult Function( - Image image, List images, PaletteGenerator palette) - complete, + required TResult Function(Image image, List images, PaletteGenerator palette) complete, required TResult Function(String? message) error, }) { return generating(); @@ -297,8 +280,7 @@ class _$ImageSplitterGenerating implements ImageSplitterGenerating { TResult? whenOrNull( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, }) { return generating?.call(); @@ -309,8 +291,7 @@ class _$ImageSplitterGenerating implements ImageSplitterGenerating { TResult maybeWhen( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, required TResult orElse(), }) { @@ -364,18 +345,16 @@ abstract class ImageSplitterGenerating implements ImageSplitterState { /// @nodoc abstract class $ImageSplitterCompleteCopyWith<$Res> { - factory $ImageSplitterCompleteCopyWith(ImageSplitterComplete value, - $Res Function(ImageSplitterComplete) then) = + factory $ImageSplitterCompleteCopyWith(ImageSplitterComplete value, $Res Function(ImageSplitterComplete) then) = _$ImageSplitterCompleteCopyWithImpl<$Res>; + $Res call({Image image, List images, PaletteGenerator palette}); } /// @nodoc -class _$ImageSplitterCompleteCopyWithImpl<$Res> - extends _$ImageSplitterStateCopyWithImpl<$Res> +class _$ImageSplitterCompleteCopyWithImpl<$Res> extends _$ImageSplitterStateCopyWithImpl<$Res> implements $ImageSplitterCompleteCopyWith<$Res> { - _$ImageSplitterCompleteCopyWithImpl( - ImageSplitterComplete _value, $Res Function(ImageSplitterComplete) _then) + _$ImageSplitterCompleteCopyWithImpl(ImageSplitterComplete _value, $Res Function(ImageSplitterComplete) _then) : super(_value, (v) => _then(v as ImageSplitterComplete)); @override @@ -432,26 +411,20 @@ class _$ImageSplitterComplete implements ImageSplitterComplete { } @override - int get hashCode => Object.hash( - runtimeType, - const DeepCollectionEquality().hash(image), - const DeepCollectionEquality().hash(images), - const DeepCollectionEquality().hash(palette)); + int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(image), + const DeepCollectionEquality().hash(images), const DeepCollectionEquality().hash(palette)); @JsonKey(ignore: true) @override $ImageSplitterCompleteCopyWith get copyWith => - _$ImageSplitterCompleteCopyWithImpl( - this, _$identity); + _$ImageSplitterCompleteCopyWithImpl(this, _$identity); @override @optionalTypeArgs TResult when( TResult Function() $default, { required TResult Function() generating, - required TResult Function( - Image image, List images, PaletteGenerator palette) - complete, + required TResult Function(Image image, List images, PaletteGenerator palette) complete, required TResult Function(String? message) error, }) { return complete(image, images, palette); @@ -462,8 +435,7 @@ class _$ImageSplitterComplete implements ImageSplitterComplete { TResult? whenOrNull( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, }) { return complete?.call(image, images, palette); @@ -474,8 +446,7 @@ class _$ImageSplitterComplete implements ImageSplitterComplete { TResult maybeWhen( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, required TResult orElse(), }) { @@ -524,32 +495,31 @@ class _$ImageSplitterComplete implements ImageSplitterComplete { } abstract class ImageSplitterComplete implements ImageSplitterState { - const factory ImageSplitterComplete( - Image image, List images, PaletteGenerator palette) = + const factory ImageSplitterComplete(Image image, List images, PaletteGenerator palette) = _$ImageSplitterComplete; Image get image; + List get images; + PaletteGenerator get palette; + @JsonKey(ignore: true) - $ImageSplitterCompleteCopyWith get copyWith => - throw _privateConstructorUsedError; + $ImageSplitterCompleteCopyWith get copyWith => throw _privateConstructorUsedError; } /// @nodoc abstract class $ImageSplitterErrorCopyWith<$Res> { - factory $ImageSplitterErrorCopyWith( - ImageSplitterError value, $Res Function(ImageSplitterError) then) = + factory $ImageSplitterErrorCopyWith(ImageSplitterError value, $Res Function(ImageSplitterError) then) = _$ImageSplitterErrorCopyWithImpl<$Res>; + $Res call({String? message}); } /// @nodoc -class _$ImageSplitterErrorCopyWithImpl<$Res> - extends _$ImageSplitterStateCopyWithImpl<$Res> +class _$ImageSplitterErrorCopyWithImpl<$Res> extends _$ImageSplitterStateCopyWithImpl<$Res> implements $ImageSplitterErrorCopyWith<$Res> { - _$ImageSplitterErrorCopyWithImpl( - ImageSplitterError _value, $Res Function(ImageSplitterError) _then) + _$ImageSplitterErrorCopyWithImpl(ImageSplitterError _value, $Res Function(ImageSplitterError) _then) : super(_value, (v) => _then(v as ImageSplitterError)); @override @@ -590,8 +560,7 @@ class _$ImageSplitterError implements ImageSplitterError { } @override - int get hashCode => - Object.hash(runtimeType, const DeepCollectionEquality().hash(message)); + int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(message)); @JsonKey(ignore: true) @override @@ -603,9 +572,7 @@ class _$ImageSplitterError implements ImageSplitterError { TResult when( TResult Function() $default, { required TResult Function() generating, - required TResult Function( - Image image, List images, PaletteGenerator palette) - complete, + required TResult Function(Image image, List images, PaletteGenerator palette) complete, required TResult Function(String? message) error, }) { return error(message); @@ -616,8 +583,7 @@ class _$ImageSplitterError implements ImageSplitterError { TResult? whenOrNull( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, }) { return error?.call(message); @@ -628,8 +594,7 @@ class _$ImageSplitterError implements ImageSplitterError { TResult maybeWhen( TResult Function()? $default, { TResult Function()? generating, - TResult Function(Image image, List images, PaletteGenerator palette)? - complete, + TResult Function(Image image, List images, PaletteGenerator palette)? complete, TResult Function(String? message)? error, required TResult orElse(), }) { @@ -681,7 +646,7 @@ abstract class ImageSplitterError implements ImageSplitterState { const factory ImageSplitterError({String? message}) = _$ImageSplitterError; String? get message; + @JsonKey(ignore: true) - $ImageSplitterErrorCopyWith get copyWith => - throw _privateConstructorUsedError; + $ImageSplitterErrorCopyWith get copyWith => throw _privateConstructorUsedError; } diff --git a/lib/main.dart b/lib/main.dart index d030d4f..daa2141 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,8 +1,11 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:my_flutter_puzzle/res/palette.dart'; import 'package:my_flutter_puzzle/screens/level_list/screen/level_list_screen.dart'; +import 'package:my_flutter_puzzle/screens/puzzle/puzzle_starter_screen.dart'; import 'package:my_flutter_puzzle/utils/color_brightness.dart'; +import 'package:my_flutter_puzzle/utils/extensions/string_extensions.dart'; import 'package:url_strategy/url_strategy.dart'; void main() async { @@ -18,6 +21,10 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { + SystemChrome.setPreferredOrientations([ + DeviceOrientation.landscapeLeft, + DeviceOrientation.landscapeRight, + ]); return MaterialApp( title: 'Flutter Puzzle', debugShowCheckedModeBanner: false, @@ -39,7 +46,11 @@ class MyApp extends StatelessWidget { onSurface: Colors.white38, ), ), - home: const LevelListScreen(), + home: PuzzleStarterScreen( + duration: 3, + puzzleSize: 5, + image: 'default_image'.pngPath, + ), ); } } diff --git a/lib/res/strings.dart b/lib/res/strings.dart index 0aa5d4a..4526713 100644 --- a/lib/res/strings.dart +++ b/lib/res/strings.dart @@ -12,8 +12,3 @@ class Strings { } const defaultImagePath = 'assets/images/default_image.png'; - -/// username can be made like this -/// @ -/// eg: souvik@124432523 - diff --git a/lib/screens/level_list/screen/level_list_screen.dart b/lib/screens/level_list/screen/level_list_screen.dart index 35b61c5..728815e 100644 --- a/lib/screens/level_list/screen/level_list_screen.dart +++ b/lib/screens/level_list/screen/level_list_screen.dart @@ -30,7 +30,7 @@ class _LevelListScreenState extends State { Widget build(BuildContext context) { return Scaffold( body: GridView.builder( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 5), itemBuilder: (context, index) { return Container( margin: const EdgeInsets.all(8), @@ -45,7 +45,7 @@ class _LevelListScreenState extends State { Text("زمان بازی : ${_levelList[index].duration} دقیقه"), const SizedBox(height: 8), GestureDetector( - child: const Text('شروغ'), + child: const Text('شروع'), onTap: () => _startLevel(_levelList[index]), ), ], diff --git a/lib/screens/photo/photo_screen.dart b/lib/screens/photo/photo_screen.dart index cf98af5..9fffe65 100644 --- a/lib/screens/photo/photo_screen.dart +++ b/lib/screens/photo/photo_screen.dart @@ -6,11 +6,8 @@ import 'package:my_flutter_puzzle/models/puzzle_data.dart'; import 'package:my_flutter_puzzle/providers.dart'; import 'package:my_flutter_puzzle/res/palette.dart'; import 'package:my_flutter_puzzle/screens/photo/photo_screen_large.dart'; -import 'package:my_flutter_puzzle/screens/photo/photo_screen_medium.dart'; -import 'package:my_flutter_puzzle/screens/photo/photo_screen_small.dart'; import 'package:my_flutter_puzzle/utils/color_brightness.dart'; import 'package:my_flutter_puzzle/utils/puzzle_solver.dart'; -import 'package:my_flutter_puzzle/utils/responsive_layout.dart'; import 'package:rive/rive.dart'; class PhotoScreen extends ConsumerStatefulWidget { @@ -82,29 +79,17 @@ class _PhotoScreenState extends ConsumerState { final state = ref.watch(imageSplitterNotifierProvider); return state.maybeWhen( - () => Theme( - data: _themeData, - child: ResponsiveLayout( - largeChild: PhotoScreenLarge( - solverClient: _solverClient, - initialPuzzleData: _initialPuzzleData, - puzzleSize: _puzzleSize, - riveController: _riveController, - ), - mediumChild: PhotoScreenMedium( - solverClient: _solverClient, - initialPuzzleData: _initialPuzzleData, - puzzleSize: _puzzleSize, - riveController: _riveController, - ), - smallChild: PhotoScreenSmall( + () { + return Theme( + data: _themeData, + child: PhotoScreenLarge( solverClient: _solverClient, initialPuzzleData: _initialPuzzleData, puzzleSize: _puzzleSize, riveController: _riveController, ), - ), - ), + ); + }, complete: (image, images, palette) { _themeData = Theme.of(context).copyWith( colorScheme: ColorScheme( @@ -123,49 +108,21 @@ class _PhotoScreenState extends ConsumerState { ); return Theme( data: _themeData, - child: ResponsiveLayout( - largeChild: PhotoScreenLarge( - solverClient: _solverClient, - initialPuzzleData: _initialPuzzleData, - puzzleSize: _puzzleSize, - riveController: _riveController, - ), - mediumChild: PhotoScreenMedium( - solverClient: _solverClient, - initialPuzzleData: _initialPuzzleData, - puzzleSize: _puzzleSize, - riveController: _riveController, - ), - smallChild: PhotoScreenSmall( - solverClient: _solverClient, - initialPuzzleData: _initialPuzzleData, - puzzleSize: _puzzleSize, - riveController: _riveController, - ), - ), - ); - }, - orElse: () => Theme( - data: _themeData, - child: ResponsiveLayout( - largeChild: PhotoScreenLarge( - solverClient: _solverClient, - initialPuzzleData: _initialPuzzleData, - puzzleSize: _puzzleSize, - riveController: _riveController, - ), - mediumChild: PhotoScreenMedium( - solverClient: _solverClient, - initialPuzzleData: _initialPuzzleData, - puzzleSize: _puzzleSize, - riveController: _riveController, - ), - smallChild: PhotoScreenSmall( + child: PhotoScreenLarge( solverClient: _solverClient, initialPuzzleData: _initialPuzzleData, puzzleSize: _puzzleSize, riveController: _riveController, ), + ); + }, + orElse: () => Theme( + data: _themeData, + child: PhotoScreenLarge( + solverClient: _solverClient, + initialPuzzleData: _initialPuzzleData, + puzzleSize: _puzzleSize, + riveController: _riveController, ), ), ); diff --git a/lib/screens/photo/photo_screen_large.dart b/lib/screens/photo/photo_screen_large.dart index 53099f6..697b540 100644 --- a/lib/screens/photo/photo_screen_large.dart +++ b/lib/screens/photo/photo_screen_large.dart @@ -74,140 +74,139 @@ class _SoloScreenLargeState extends ConsumerState { }); var fontSize = 70.0; - var boardSize = 450.0; + var boardSize = 280.0; - var spacing = 5; + var spacing = 4; var eachBoxSize = (boardSize / _puzzleSize) - (spacing * (_puzzleSize - 1)); return Scaffold( backgroundColor: Theme.of(context).colorScheme.background, - body: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 56.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 32), - MovesTilesWidget(solverClient: _solverClient), - const SizedBox(height: 32), - GameButtonWidget( - solverClient: _solverClient, - initialPuzzleData: _initialPuzzleData, - ), - ], + body: SafeArea( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsetsDirectional.symmetric(horizontal: 10), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox(height: 32), + MovesTilesWidget(solverClient: _solverClient, fontSize: 16), + const SizedBox(height: 32), + GameButtonWidget( + solverClient: _solverClient, + initialPuzzleData: _initialPuzzleData, + ), + ], + ), ), - ), - SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - const TimerWidget( - fontSize: 40, - ), - const SizedBox(height: 36), - Consumer( - builder: (context, ref, child) { - final state = ref.watch(imageSplitterNotifierProvider); + SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + const TimerWidget(fontSize: 30), + const SizedBox(height: 12), + Consumer( + builder: (context, ref, child) { + final state = ref.watch(imageSplitterNotifierProvider); - return state.maybeWhen( - () => PuzzleWidget( - solverClient: _solverClient, - boardSize: boardSize, - eachBoxSize: eachBoxSize, - initialPuzzleData: _initialPuzzleData, - fontSize: fontSize, - images: _previousImages, - kInitialSpeed: kInitialSpeed, - ), - complete: (image, images, palette) { - _previousImages = images; - _previousImage = image; - _previousPalette = palette; + return state.maybeWhen( + () => PuzzleWidget( + solverClient: _solverClient, + boardSize: boardSize, + eachBoxSize: eachBoxSize, + initialPuzzleData: _initialPuzzleData, + fontSize: fontSize, + images: _previousImages, + kInitialSpeed: kInitialSpeed, + ), + complete: (image, images, palette) { + _previousImages = images; + _previousImage = image; + _previousPalette = palette; - return PuzzleWidget( + return PuzzleWidget( + solverClient: _solverClient, + boardSize: boardSize, + eachBoxSize: eachBoxSize, + initialPuzzleData: _initialPuzzleData, + fontSize: fontSize, + images: images, + kInitialSpeed: kInitialSpeed, + ); + }, + orElse: () => PuzzleWidget( solverClient: _solverClient, boardSize: boardSize, eachBoxSize: eachBoxSize, initialPuzzleData: _initialPuzzleData, fontSize: fontSize, - images: images, + images: _previousImages, kInitialSpeed: kInitialSpeed, - ); - }, - orElse: () => PuzzleWidget( - solverClient: _solverClient, - boardSize: boardSize, - eachBoxSize: eachBoxSize, - initialPuzzleData: _initialPuzzleData, - fontSize: fontSize, - images: _previousImages, - kInitialSpeed: kInitialSpeed, - ), - ); - }, - ), - const SizedBox(height: 30), - ], - ), - ), - Stack( - children: [ - AnimatedDash( - boardSize: boardSize * 0.80, - riveController: _riveController, - onInit: (_) => setState(() {}), + ), + ); + }, + ), + const SizedBox(height: 30), + ], ), - Column( - mainAxisSize: MainAxisSize.max, - crossAxisAlignment: CrossAxisAlignment.end, + ), + Padding( + padding: const EdgeInsetsDirectional.symmetric(horizontal: 10), + child: Stack( children: [ - const Spacer(), - Row(), - CountdownWidget( - isStartPressed: _isStartPressed, - onFinish: () { - ref.read(timerNotifierProvider.notifier).startTimer(); - setState(() { - _isStartPressed = false; - }); - }, - initialSpeed: kInitialSpeed, + AnimatedDash( + boardSize: boardSize * 0.8, + riveController: _riveController, + onInit: (_) => setState(() {}), ), - Visibility( - visible: !_isStartPressed, - child: Column( - children: [ - ImageViewer( - imagePicker: _imagePicker, - puzzleSize: _puzzleSize, - previousImage: _previousImage, - previousPalette: _previousPalette, - imageSize: 200, - ), - PickImageButton( - text: 'Pick Image', - onTap: ref.read(imageSplitterNotifierProvider) is ImageSplitterComplete - ? () => ref.read(imageSplitterNotifierProvider.notifier).generateImages( - picker: _imagePicker, - puzzleSize: _puzzleSize, - ) - : null, + Column( + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CountdownWidget( + isStartPressed: _isStartPressed, + onFinish: () { + ref.read(timerNotifierProvider.notifier).startTimer(); + setState(() { + _isStartPressed = false; + }); + }, + initialSpeed: kInitialSpeed, + ), + Visibility( + visible: !_isStartPressed, + child: Column( + children: [ + ImageViewer( + imagePicker: _imagePicker, + puzzleSize: _puzzleSize, + previousImage: _previousImage, + previousPalette: _previousPalette, + imageSize: 200, + ), + PickImageButton( + text: 'Pick Image', + onTap: ref.read(imageSplitterNotifierProvider) is ImageSplitterComplete + ? () => ref.read(imageSplitterNotifierProvider.notifier).generateImages( + picker: _imagePicker, + puzzleSize: _puzzleSize, + ) + : null, + ), + ], ), - ], - ), + ), + ], ), - const Spacer(), - const Spacer(), - const Spacer(), ], ), - ], - ), - // SizedBox(), - ], + ), + // SizedBox(), + ], + ), ), ); } diff --git a/lib/screens/photo/photo_screen_medium.dart b/lib/screens/photo/photo_screen_medium.dart index dae2d3d..9a74847 100644 --- a/lib/screens/photo/photo_screen_medium.dart +++ b/lib/screens/photo/photo_screen_medium.dart @@ -105,23 +105,6 @@ class _PhotoScreenMediumState extends ConsumerState { // crossAxisAlignment: CrossAxisAlignment.start, children: [ Row(), - // Text( - // _puzzleType, - // style: const TextStyle( - // fontSize: 18, - // fontWeight: FontWeight.w500, - // color: Colors.white, - // ), - // ), - const SizedBox(height: 8), - const Text( - 'Puzzle Challenge', - style: TextStyle( - fontSize: 36, - fontWeight: FontWeight.w500, - color: Colors.white, - ), - ), const SizedBox(height: 16), MovesTilesWidget(solverClient: _solverClient), const SizedBox(height: 16), diff --git a/lib/screens/photo/photo_screen_small.dart b/lib/screens/photo/photo_screen_small.dart index f4a0c94..7d49927 100644 --- a/lib/screens/photo/photo_screen_small.dart +++ b/lib/screens/photo/photo_screen_small.dart @@ -92,16 +92,6 @@ class _SoloScreenLargeState extends ConsumerState { // ), body: Stack( children: [ - // CountdownWidget( - // isStartPressed: _isStartPressed, - // onFinish: () { - // ref.read(timerNotifierProvider.notifier).startTimer(); - // setState(() { - // _isStartPressed = false; - // }); - // }, - // initialSpeed: kInitialSpeed, - // ), Row( children: [ const Spacer(), @@ -113,115 +103,95 @@ class _SoloScreenLargeState extends ConsumerState { ), ], ), - SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - // crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row(), - // Text( - // _puzzleType, - // style: const TextStyle( - // fontSize: 18, - // fontWeight: FontWeight.w500, - // color: Colors.white, - // ), - // ), - const SizedBox(height: 30), - const Text( - 'Puzzle Challenge', - style: TextStyle( - fontSize: 32, - fontWeight: FontWeight.w500, - color: Colors.white, - ), - ), - const SizedBox(height: 8), - MovesTilesWidget( - solverClient: _solverClient, - fontSize: 22, - ), - const SizedBox(height: 8), - const TimerWidget(fontSize: 24), - Consumer( - builder: (context, ref, child) { - final state = ref.watch(imageSplitterNotifierProvider); - - return state.maybeWhen( - () => PuzzleWidget( - solverClient: _solverClient, - boardSize: boardSize, - eachBoxSize: eachBoxSize, - initialPuzzleData: _initialPuzzleData, - fontSize: fontSize, - images: _previousImages, - kInitialSpeed: kInitialSpeed, - borderRadius: 16, - ), - complete: (image, images, palette) { - _previousImages = images; - _previousImage = image; - _previousPalette = palette; + Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Row(), + const SizedBox(height: 60), + MovesTilesWidget( + solverClient: _solverClient, + fontSize: 22, + ), + const SizedBox(height: 20), + const TimerWidget(fontSize: 24), + const SizedBox(height: 60), + Consumer( + builder: (context, ref, child) { + final state = ref.watch(imageSplitterNotifierProvider); + return state.maybeWhen( + () => PuzzleWidget( + solverClient: _solverClient, + boardSize: boardSize, + eachBoxSize: eachBoxSize, + initialPuzzleData: _initialPuzzleData, + fontSize: fontSize, + images: _previousImages, + kInitialSpeed: kInitialSpeed, + borderRadius: 16, + ), + complete: (image, images, palette) { + _previousImages = images; + _previousImage = image; + _previousPalette = palette; - return PuzzleWidget( - solverClient: _solverClient, - boardSize: boardSize, - eachBoxSize: eachBoxSize, - initialPuzzleData: _initialPuzzleData, - fontSize: fontSize, - images: images, - kInitialSpeed: kInitialSpeed, - borderRadius: 16, - ); - }, - orElse: () => PuzzleWidget( + return PuzzleWidget( solverClient: _solverClient, boardSize: boardSize, eachBoxSize: eachBoxSize, initialPuzzleData: _initialPuzzleData, fontSize: fontSize, - images: _previousImages, + images: images, kInitialSpeed: kInitialSpeed, borderRadius: 16, - ), - ); - }, - ), - const SizedBox(height: 24), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - GameButtonWidget( + ); + }, + orElse: () => PuzzleWidget( solverClient: _solverClient, + boardSize: boardSize, + eachBoxSize: eachBoxSize, initialPuzzleData: _initialPuzzleData, - padding: const EdgeInsets.only(top: 10.0, bottom: 9.0), - width: 130, + fontSize: fontSize, + images: _previousImages, + kInitialSpeed: kInitialSpeed, + borderRadius: 16, ), - const SizedBox(width: 16), - PickImageButton( - text: 'Pick Image', - onTap: ref.read(imageSplitterNotifierProvider) is ImageSplitterComplete - ? () => ref.read(imageSplitterNotifierProvider.notifier).generateImages( - picker: _imagePicker, - puzzleSize: _puzzleSize, - ) - : null, - padding: const EdgeInsets.only(top: 10.0, bottom: 9.0), - width: 130, - ), - ], - ), - const SizedBox(height: 16), - ImageViewer( - imagePicker: _imagePicker, - puzzleSize: _puzzleSize, - previousImage: _previousImage, - previousPalette: _previousPalette, - imageSize: 110, - ), - const SizedBox(height: 50), - ], - ), + ); + }, + ), + const SizedBox(height: 24), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + GameButtonWidget( + solverClient: _solverClient, + initialPuzzleData: _initialPuzzleData, + padding: const EdgeInsets.only(top: 10.0, bottom: 9.0), + width: 130, + ), + const SizedBox(width: 16), + PickImageButton( + text: 'Pick Image', + onTap: ref.read(imageSplitterNotifierProvider) is ImageSplitterComplete + ? () => ref.read(imageSplitterNotifierProvider.notifier).generateImages( + picker: _imagePicker, + puzzleSize: _puzzleSize, + ) + : null, + padding: const EdgeInsets.only(top: 10.0, bottom: 9.0), + width: 130, + ), + ], + ), + const SizedBox(height: 16), + ImageViewer( + imagePicker: _imagePicker, + puzzleSize: _puzzleSize, + previousImage: _previousImage, + previousPalette: _previousPalette, + imageSize: 110, + ), + const SizedBox(height: 50), + ], ), ], ), diff --git a/lib/widgets/photo_screen/pick_image_button.dart b/lib/widgets/photo_screen/pick_image_button.dart index 868b651..e143e5c 100644 --- a/lib/widgets/photo_screen/pick_image_button.dart +++ b/lib/widgets/photo_screen/pick_image_button.dart @@ -32,9 +32,7 @@ class PickImageButton extends ConsumerWidget { return Theme.of(context).colorScheme.primary.withOpacity(0.5); } - return Theme.of(context) - .colorScheme - .primary; // Use the component's default. + return Theme.of(context).colorScheme.primary; }, ), ), diff --git a/lib/widgets/solo_screen/puzzle_widget/puzzle_board.dart b/lib/widgets/solo_screen/puzzle_widget/puzzle_board.dart index 0bb3497..13b9ed2 100644 --- a/lib/widgets/solo_screen/puzzle_widget/puzzle_board.dart +++ b/lib/widgets/solo_screen/puzzle_widget/puzzle_board.dart @@ -68,13 +68,14 @@ class PuzzleBoard extends ConsumerWidget { child: Text( puzzleData.offsetMap.entries.toList()[i].key.toString(), style: TextStyle( - fontSize: fontSize, + fontSize: 30, fontWeight: FontWeight.bold, color: Colors.white.withOpacity(isEnabled ? 1 : 0.5), ), ), ), - )) + ), + ) : SizedBox( height: eachBoxSize, width: eachBoxSize, diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 0d56f51..e777c67 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,7 +5,7 @@ import FlutterMacOS import Foundation -import path_provider_macos +import path_provider_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 5441d02..929745f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,42 +5,42 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: d994c55943e77955bd2cd299c6c02c52ceffc3d21a26461f903f7e10abc05b82 + sha256: e6dd5609f0945ef6bc72bdcd28af6eeabefef99a6d62b7790320133789217759 url: "https://pub.dev" source: hosted - version: "34.0.0" + version: "38.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "426436ca1a3390b330aedf78dad8d70d8df3dc88cf4cabd870428fb02b00119e" + sha256: c71e50e4e1674c9ffeaf053bb8d38e4a03b94d08af6a27fb352f3ff569becc44 url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.4.1" animated_text_kit: dependency: "direct main" description: name: animated_text_kit - sha256: "5e6bf696c1db94fae17ef0527a17cef82f3100daebb53a3bdeb1c34f6b2ccdcc" + sha256: "37392a5376c9a1a503b02463c38bc0342ef814ddbb8f9977bc90f2a84b22fa92" url: "https://pub.dev" source: hosted - version: "4.2.1" + version: "4.2.2" archive: dependency: transitive description: name: archive - sha256: b4e685f9b52b7c50b6433fa4008572f157ca5841f4dbddda513a112a8c23cb69 + sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.3.6" args: dependency: transitive description: name: args - sha256: "0bd9a99b6eb96f07af141f0eb53eace8983e8e5aa5de59777aca31684680ef22" + sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.0" async: dependency: transitive description: @@ -61,50 +61,50 @@ packages: dependency: transitive description: name: build - sha256: c9b6c412967d7887e88efe1ffbfe0f31bfaf6a5a4b98eb8d59964977a90f2f9e + sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.1" build_config: dependency: transitive description: name: build_config - sha256: ad77deb6e9c143a3f550fbb4c5c1e0c6aadabe24274898d06b9526c61b9cf4fb + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.1" build_daemon: dependency: transitive description: name: build_daemon - sha256: "4e2dbfa914f99bca9c447ba5aaa572edf7335a71717944e4ab2e26ca079e7f79" + sha256: "6bc5544ea6ce4428266e7ea680e945c68806c4aae2da0eb5e9ccf38df8d6acbf" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.0" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: "4666aef1d045c5ca15ebba63e400bd4e4fbd9f0dd06e791b51ab210da78a27f7" + sha256: "9aae031a54ab0beebc30a888c93e900d15ae2fd8883d031dbfbd5ebdb57f5a4c" url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.0.9" build_runner: dependency: "direct dev" description: name: build_runner - sha256: e090beee726671ff68747cb4d8c9151704864ec9a5dc88db9fe6441c24b3fa55 + sha256: "56942f8114731d1e79942cd981cfef29501937ff1bccf4dbdce0273f31f13640" url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.2.0" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: f4d6244cc071ba842c296cb1c4ee1b31596b9f924300647ac7a1445493471a3f + sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292" url: "https://pub.dev" source: hosted - version: "7.2.3" + version: "7.2.7" built_collection: dependency: transitive description: @@ -117,10 +117,10 @@ packages: dependency: transitive description: name: built_value - sha256: b6c9911b2d670376918d5b8779bc27e0e612a94ec3ff0343689e991d8d0a3b8a + sha256: "169565c8ad06adb760c3645bf71f00bff161b00002cace266cad42c5d22a7725" url: "https://pub.dev" source: hosted - version: "8.1.4" + version: "8.4.3" characters: dependency: transitive description: @@ -129,30 +129,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.1" - charcode: - dependency: transitive - description: - name: charcode - sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 - url: "https://pub.dev" - source: hosted - version: "1.3.1" checked_yaml: dependency: transitive description: name: checked_yaml - sha256: dd007e4fb8270916820a0d66e24f619266b60773cddd082c6439341645af2659 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - cli_util: - dependency: transitive - description: - name: cli_util - sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" + sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" url: "https://pub.dev" source: hosted - version: "0.3.5" + version: "2.0.2" clock: dependency: transitive description: @@ -165,10 +149,10 @@ packages: dependency: transitive description: name: code_builder - sha256: bdb1ab29be158c4784d7f9b7b693745a0719c5899e31c01112782bb1cb871e80 + sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe" url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.4.0" collection: dependency: "direct main" description: @@ -189,50 +173,50 @@ packages: dependency: transitive description: name: convert - sha256: f08428ad63615f96a27e34221c65e1a451439b5f26030f78d790f461c686d65d + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.1" crop: dependency: "direct main" description: name: crop - sha256: d46d586cc71a56d18341b61138146a41b6e11a4b16d3b453b77c7eb24da847d4 + sha256: "0168b1e6be35077c6d6af328363fffb8f8526a00bc2c8a5a9ba51b0f61146421" url: "https://pub.dev" source: hosted - version: "0.5.2" + version: "0.5.4" cross_file: dependency: transitive description: name: cross_file - sha256: "552ffd2f851d4314958e6265452af1891959e00cd32b6d17452c5b836e27a0fa" + sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" url: "https://pub.dev" source: hosted - version: "0.3.2" + version: "0.3.3+4" crypto: dependency: transitive description: name: crypto - sha256: cf75650c66c0316274e21d7c43d3dea246273af5955bd94e8184837cd577575c + sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: "1989d917fbe8e6b39806207df5a3fdd3d816cbd090fac2ce26fb45e9a71476e5" + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" dart_style: dependency: transitive description: name: dart_style - sha256: "6e8086e1d3c2f6bc15056ee248c4ddc48c2bc71287c0961bf801a08633ed4333" + sha256: "8aff82f9b26fd868992e5430335a9d773bfef01e1d852d7ba71bf4c5d9349351" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.3" fake_async: dependency: transitive description: @@ -245,26 +229,26 @@ packages: dependency: transitive description: name: ffi - sha256: "35d0f481d939de0d640b3db9a7aa36a52cd22054a798a73b4f50bdad5ce12678" + sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "2.0.1" file: dependency: transitive description: name: file - sha256: b69516f2c26a5bcac4eee2e32512e1a5205ab312b3536c1c1227b2b942b5f9ad + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.1.4" fixnum: dependency: transitive description: name: fixnum - sha256: "6a2ef17156f4dc49684f9d99aaf4a93aba8ac49f5eac861755f5730ddf6e2e4e" + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.0" flutter: dependency: "direct main" description: flutter @@ -282,18 +266,18 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "5c574d21b98ec92adab05ead10afd2b13ff5856c7ca79696edb338a9dd8ed387" + sha256: "4bef634684b2c7f3468c77c766c831229af829a0cd2d4ee6c1b99558bd14e5d2" url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.0.8" flutter_riverpod: dependency: "direct main" description: name: flutter_riverpod - sha256: c57d053ca394a9f4ae3cb09654564700515c01ecf969e1bff0b5be479df4e3c4 + sha256: d84e180f039a6b963e610d2e4435641fdfe8f12437e8770e963632e05af16d80 url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" flutter_test: dependency: "direct dev" description: flutter @@ -332,98 +316,114 @@ packages: dependency: transitive description: name: frontend_server_client - sha256: "6d2930621b9377f6a4b7d260fce525d48dd77a334f0d5d4177d07b0dcb76c032" + sha256: "4f4a162323c86ffc1245765cfe138872b8f069deb42f7dbb36115fa27f31469b" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" glob: dependency: transitive description: name: glob - sha256: "8321dd2c0ab0683a91a51307fa844c6db4aa8e3981219b78961672aaab434658" + sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.1" graphs: dependency: transitive description: name: graphs - sha256: ae0b3d956ff324c6f8671f08dcb2dbd71c99cdbf2aa3ca63a14190c47aa6679c + sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" http: dependency: transitive description: name: http - sha256: "2ed163531e071c2c6b7c659635112f24cb64ecbebf6af46b550d536c0b1aa112" + sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" url: "https://pub.dev" source: hosted - version: "0.13.4" + version: "0.13.5" http_multi_server: dependency: transitive description: name: http_multi_server - sha256: bfb651625e251a88804ad6d596af01ea903544757906addcb2dcdf088b5ea185 + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.2.1" http_parser: dependency: transitive description: name: http_parser - sha256: e362d639ba3bc07d5a71faebb98cde68c05bfbcfbbb444b60b6f60bb67719185 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.0.2" image: dependency: "direct main" description: name: image - sha256: "02bafd3b4f399bfeb10034deba9753d93b55ce41cd0c4d3d8b355626f80e5b32" + sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.3.0" image_picker: dependency: "direct main" description: name: image_picker - sha256: "28769e99d4a61b810a5b15c3d7a1dbdaf3b48273e5d26fbf7ad4d72f3a222dc3" + sha256: "22207768556b82d55ec70166824350fee32298732d5efa4d6e756f848f51f66a" + url: "https://pub.dev" + source: hosted + version: "0.8.6+3" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + sha256: "68d067baf7f6e401b1124ee83dd6967e67847314250fd68012aab34a69beb344" url: "https://pub.dev" source: hosted - version: "0.8.4+10" + version: "0.8.5+7" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "837609ccdb538b6d255808f6920179af004f2fecd1eb529fb14d313c289a9333" + sha256: "66fc6e3877bbde82c33d122f3588777c3784ac5bd7d1cdd79213ef7aecb85b34" url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.1.11" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + sha256: "39aa70b5f1e5e7c94585b9738632d5fdb764a5655e40cd9e7b95fbd2fc50c519" + url: "https://pub.dev" + source: hosted + version: "0.8.6+9" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "32eeb07cc4cac86ff61d5f4efb5756098e17841411ad010f380a61837da9eaf6" + sha256: "1991219d9dbc42a99aff77e663af8ca51ced592cd6685c9485e3458302d3d4f8" url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "2.6.3" io: dependency: transitive description: name: io - sha256: "0d4c73c3653ab85bf696d51a9657604c900a370549196a91f33e4c39af760852" + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" isolated_worker: dependency: "direct main" description: name: isolated_worker - sha256: a848f249c7255d323455d7e5e932024e5e6138f09403a568fd763c2aaf78cb1b + sha256: "79353f342871be5b6a19153a33d75f7a391aac9b210d97db4415d50c78e0170b" url: "https://pub.dev" source: hosted - version: "0.1.0" + version: "0.1.1" js: dependency: transitive description: @@ -436,10 +436,10 @@ packages: dependency: transitive description: name: json_annotation - sha256: "2639efc0237c7b71c6584696c0847ea4e4733ddaf571ae9c79d5295e8ae17272" + sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "4.8.0" lints: dependency: transitive description: @@ -452,10 +452,10 @@ packages: dependency: transitive description: name: logging - sha256: "293ae2d49fd79d4c04944c3a26dfd313382d5f52e821ec57119230ae16031ad4" + sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.1" matcher: dependency: transitive description: @@ -484,26 +484,26 @@ packages: dependency: transitive description: name: mime - sha256: fd5f81041e6a9fc9b9d7fa2cb8a01123f9f5d5d49136e06cb9dc7d33689529f4 + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.4" package_config: dependency: transitive description: name: package_config - sha256: a4d5ede5ca9c3d88a2fef1147a078570c861714c806485c596b109819135bc12 + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" palette_generator: dependency: "direct main" description: name: palette_generator - sha256: "6a44587e4c4e4ca670f89840615bdd7ca3de708805ccee0e2519cda9bb42dc98" + sha256: "0e3cd6974e10b1434dcf4cf779efddb80e2696585e273a2dbede6af52f94568d" url: "https://pub.dev" source: hosted - version: "0.3.3" + version: "0.3.3+2" path: dependency: transitive description: @@ -516,66 +516,58 @@ packages: dependency: "direct main" description: name: path_provider - sha256: e92dee4d38a9044605cb3fb253e9b46eb9375dfcad4515d0379b44ac90797568 + sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9" url: "https://pub.dev" source: hosted - version: "2.0.9" + version: "2.0.13" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "8b759fb6c74955931e87f550cc9e890b0cccb7ef8e710943973efeaa9695c54d" + sha256: "7623b7d4be0f0f7d9a8b5ee6879fc13e4522d4c875ab86801dee4af32b54b83e" url: "https://pub.dev" source: hosted - version: "2.0.12" - path_provider_ios: + version: "2.0.23" + path_provider_foundation: dependency: transitive description: - name: path_provider_ios - sha256: "943b76e54056386432cdc2731cb303e2f580346b61a1fc73819721767be72309" + name: path_provider_foundation + sha256: eec003594f19fe2456ea965ae36b3fc967bc5005f508890aafe31fa75e41d972 url: "https://pub.dev" source: hosted - version: "2.0.8" + version: "2.1.2" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: "1e109f4df28bd95eab71e323008b53d19c4d633bc1ab05b577518773474e9621" - url: "https://pub.dev" - source: hosted - version: "2.1.5" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - sha256: "0adeb313e1f2c3fc52baeeee59b0fe9c2d1f7da56fd96a9234e1702ec653a453" + sha256: "525ad5e07622d19447ad740b1ed5070031f7a5437f44355ae915ff56e986429a" url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.1.9" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "3dc0d51b07f85fec3746d9f4e8d31c73bb173cafa2e763f03f8df2e8d1878882" + sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.0.6" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: "366ad4e3541ea707f859e7148d4d5aba67d589d7936cee04a05c464a277eeb27" + sha256: "642ddf65fde5404f83267e8459ddb4556316d3ee6d511ed193357e25caa3632d" url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.1.4" petitparser: dependency: transitive description: name: petitparser - sha256: "1a914995d4ef10c94ff183528c120d35ed43b5eaa8713fc6766a9be4570782e2" + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "5.1.0" platform: dependency: transitive description: @@ -588,18 +580,26 @@ packages: dependency: transitive description: name: plugin_platform_interface - sha256: "075f927ebbab4262ace8d0b283929ac5410c0ac4e7fc123c76429564facfb757" + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 + url: "https://pub.dev" + source: hosted + version: "3.6.2" pool: dependency: transitive description: name: pool - sha256: "05955e3de2683e1746222efd14b775df7131139e07695dc8e24650f6b4204504" + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "1.5.1" process: dependency: transitive description: @@ -612,34 +612,26 @@ packages: dependency: transitive description: name: pub_semver - sha256: b5a5fcc6425ea43704852ba4453ba94b08c2226c63418a260240c3a054579014 + sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.3" pubspec_parse: dependency: transitive description: name: pubspec_parse - sha256: "3686efe4a4613a4449b1a4ae08670aadbd3376f2e78d93e3f8f0919db02a7256" + sha256: "75f6614d6dde2dc68948dffbaa4fe5dae32cd700eb9fb763fe11dfb45a3c4d0a" url: "https://pub.dev" source: hosted - version: "1.2.0" - quiver: - dependency: transitive - description: - name: quiver - sha256: "616b691d1c8f5c53b7b39ce3542f6a25308d7900bf689d0210e72a644a10387e" - url: "https://pub.dev" - source: hosted - version: "3.0.1+1" + version: "1.2.1" rive: dependency: "direct main" description: name: rive - sha256: "46cccb2ad44033ad34448f5dc2b7381860694d5d2b658dc800913f525dc1e24e" + sha256: f76eaf823d7b0c7d6640dbb10f499f387fa66d01aa711ce7a4533a4e90b48c4a url: "https://pub.dev" source: hosted - version: "0.8.1" + version: "0.8.4" riverpod: dependency: transitive description: @@ -652,18 +644,18 @@ packages: dependency: transitive description: name: shelf - sha256: c240984c924796e055e831a0a36db23be8cb04f170b26df572931ab36418421d + sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.4.0" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - sha256: fd84910bf7d58db109082edf7326b75322b8f186162028482f53dc892f00332d + sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.3" sky_engine: dependency: transitive description: flutter @@ -673,10 +665,10 @@ packages: dependency: transitive description: name: source_gen - sha256: d5aa894fcfa327e19196d6f4f733597a10b42a7e55c8cb2b0dd60d7e7d27dccf + sha256: "00f8b6b586f724a8c769c96f1d517511a41661c0aede644544d8d86a1ab11142" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" source_span: dependency: transitive description: @@ -713,10 +705,10 @@ packages: dependency: transitive description: name: stream_transform - sha256: ed464977cb26a1f41537e177e190c67223dbd9f4f683489b6ab2e5d211ec564e + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: @@ -745,26 +737,26 @@ packages: dependency: transitive description: name: timing - sha256: c386d07d7f5efc613479a7c4d9d64b03710b03cfaa7e8ad5f2bfb295a1f0dfad + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" tuple: dependency: "direct main" description: name: tuple - sha256: fe3ae4f0dca3f9aac0888e2e0d117b642ce283a82d7017b54136290c0a3b0dd3 + sha256: "0ea99cd2f9352b2586583ab2ce6489d1f95a5f6de6fb9492faaf97ae2060f0aa" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.1" typed_data: dependency: transitive description: name: typed_data - sha256: "53bdf7e979cfbf3e28987552fd72f637e63f3c8724c9e56d9246942dc2fa36ee" + sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.1" url_strategy: dependency: "direct main" description: @@ -785,50 +777,50 @@ packages: dependency: transitive description: name: watcher - sha256: e42dfcc48f67618344da967b10f62de57e04bae01d9d3af4c2596f3712a88c99 + sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.2" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "0c2ada1b1aeb2ad031ca81872add6be049b8cb479262c6ad3c4b0f9c24eaab2f" + sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.3.0" win32: dependency: transitive description: name: win32 - sha256: cde1e6d546d8cfd0b3c72bc6f29d980fa629d1cb107f38e2a039ca5d10d79e41 + sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "3.1.3" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: "060b6e1c891d956f72b5ac9463466c37cce3fa962a921532fc001e86fe93438e" + sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 url: "https://pub.dev" source: hosted - version: "0.2.0+1" + version: "1.0.0" xml: dependency: transitive description: name: xml - sha256: baa23bcba1ba4ce4b22c0c7a1d9c861e7015cb5169512676da0b85138e72840c + sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" url: "https://pub.dev" source: hosted - version: "5.3.1" + version: "6.2.2" yaml: dependency: transitive description: name: yaml - sha256: "3cee79b1715110341012d27756d9bae38e650588acd38d3f3c610822e1337ace" + sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.1" sdks: - dart: ">=2.18.0 <3.0.0" - flutter: ">=2.8.0" + dart: ">=2.19.0 <3.0.0" + flutter: ">=3.0.0"