diff --git a/.gitignore b/.gitignore index 24476c5..065dc2c 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ migrate_working_dir/ .pub-cache/ .pub/ /build/ +pubspec.lock # Symbolication related app.*.symbols diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c5439ff..752ea03 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -3,9 +3,9 @@ + android:icon="@mipmap/launcher_icon"> CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Smoke Cess App + ZI SmokeFree CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -15,7 +15,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - smoke_cess_app + ZI SmokeFree CFBundlePackageType APPL CFBundleShortVersionString diff --git a/lib/pages/interval_page.dart b/lib/pages/interval_page.dart index 5117a8d..2326168 100644 --- a/lib/pages/interval_page.dart +++ b/lib/pages/interval_page.dart @@ -10,7 +10,7 @@ class IntervalTimerPage extends StatelessWidget { @override Widget build(BuildContext context) { - return const ViewFormPage( - form: WorkoutForm(), view: WorkoutView(), page: Pages.timer); + return ViewFormPage( + form: WorkoutForm(), view: const WorkoutView(), page: Pages.timer); } } diff --git a/lib/providers/audio_provider.dart b/lib/providers/audio_provider.dart new file mode 100644 index 0000000..a141cb2 --- /dev/null +++ b/lib/providers/audio_provider.dart @@ -0,0 +1,47 @@ +import 'dart:async'; + +import 'package:audioplayers/audioplayers.dart'; +import 'package:flutter/cupertino.dart'; + +class AudioProvider extends ChangeNotifier { + final AudioPlayer _audioPlayer = AudioPlayer(); + bool _isMuted = false; + final Source _finishedSoundSource = AssetSource('finish.mp3'); + final Source _beepSoundSource = AssetSource('beep.mp3'); + StreamSubscription? _onCompleteSubscription; + + bool get isMuted => _isMuted; + + void stop() => _resetPlayer(); + + void playFinishSound() { + _resetPlayer(); + _audioPlayer.play(_finishedSoundSource); + } + + void mutePlayer() { + _isMuted = true; + _audioPlayer.setVolume(0); + notifyListeners(); + } + + void unMutePlayer() { + _isMuted = false; + _audioPlayer.setVolume(1); + notifyListeners(); + } + + //resets player position and delete listening subscription + void _resetPlayer() { + _audioPlayer.stop(); + _onCompleteSubscription?.cancel(); + } + + void playSourceAfterBeep(AssetSource source) { + _resetPlayer(); + _audioPlayer.play(_beepSoundSource); + _onCompleteSubscription = _audioPlayer.onPlayerComplete.listen((event) { + _audioPlayer.play(source); + }); + } +} diff --git a/lib/providers/workout_provider.dart b/lib/providers/workout_provider.dart index 15ff39a..067ebcb 100644 --- a/lib/providers/workout_provider.dart +++ b/lib/providers/workout_provider.dart @@ -1,38 +1,20 @@ -import 'dart:async'; - import 'package:audioplayers/audioplayers.dart'; import 'package:flutter/material.dart'; import 'package:smoke_cess_app/models/workout.dart'; +import 'package:smoke_cess_app/providers/audio_provider.dart'; import 'package:smoke_cess_app/providers/timer_provider.dart'; import '../globals.dart' as globals; class WorkoutProvider extends ChangeNotifier { - TimerProvider timerProvider; + final TimerProvider timerProvider; + final AudioProvider audioProvider; - final AudioPlayer _audioPlayer = AudioPlayer(); - late StreamSubscription _onCompleteSubscription; - final Source _finishedSoundSource = AssetSource('finish.mp3'); - final Source _beepSoundSource = AssetSource('beep.mp3'); bool isWorkoutStarted = false; bool isWorkoutComplete = false; - bool isMuted = false; int motivationBefore = 50; int motivationAfter = 50; - void mutePlayer() { - isMuted = true; - _audioPlayer.setVolume(0); - notifyListeners(); - } - - void unMutePlayer() { - isMuted = false; - _audioPlayer.setVolume(1); - notifyListeners(); - } - - WorkoutProvider(this.timerProvider); - + int _workoutPhaseIndex = 0; final List _workoutPhases = [ 'Warm-Up', 'High Intensity', @@ -44,7 +26,8 @@ class WorkoutProvider extends ChangeNotifier { 'High Intensity', 'Cool-down' ]; - int _workoutPhaseIndex = 0; + + WorkoutProvider(this.timerProvider, this.audioProvider); String get currentPhase => _workoutPhases[_workoutPhaseIndex]; Duration get currentPhaseDuration => @@ -56,19 +39,15 @@ class WorkoutProvider extends ChangeNotifier { _workoutPhaseSettings[currentPhase]!['source']; void nextPhase() { - print('called next phase'); _onCompleteSubscription.cancel(); _audioPlayer.stop(); if (_workoutPhaseIndex < _workoutPhases.length - 1) { - _audioPlayer.play(_beepSoundSource); _workoutPhaseIndex += 1; - _onCompleteSubscription = _audioPlayer.onPlayerComplete.listen((event) { - _audioPlayer.play(currentPhaseSource); - }); + audioProvider.playSourceAfterBeep(currentPhaseSource); timerProvider.startTimer(currentPhaseDuration); } else { //workout completed - _audioPlayer.play(_finishedSoundSource); + audioProvider.playFinishSound; stopWorkout(); } } @@ -76,29 +55,29 @@ class WorkoutProvider extends ChangeNotifier { void startWorkout() { isWorkoutStarted = true; isWorkoutComplete = false; - _audioPlayer.play(_beepSoundSource).whenComplete(() => null); - _onCompleteSubscription = _audioPlayer.onPlayerComplete.listen((event) { - _audioPlayer.play(currentPhaseSource); - }); + audioProvider.playSourceAfterBeep(currentPhaseSource); timerProvider.startTimer(currentPhaseDuration); } void stopWorkout() { isWorkoutStarted = false; isWorkoutComplete = true; - _audioPlayer.stop(); - timerProvider.stopTimer(); + _cleanUp(); notifyListeners(); } void interruptWorkout() { isWorkoutStarted = false; isWorkoutComplete = false; - _audioPlayer.stop(); - timerProvider.stopTimer(); + _cleanUp(); notifyListeners(); } + void _cleanUp() { + audioProvider.stop(); + timerProvider.stopTimer(); + } + void saveWorkout() { Workout workout = Workout(motivationBefore, motivationAfter, DateTime.now()); @@ -107,7 +86,7 @@ class WorkoutProvider extends ChangeNotifier { @override void dispose() { - interruptWorkout(); + _cleanUp(); super.dispose(); } } diff --git a/lib/widgets/mute_button.dart b/lib/widgets/mute_button.dart index 863bb52..29bebf7 100644 --- a/lib/widgets/mute_button.dart +++ b/lib/widgets/mute_button.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:smoke_cess_app/providers/workout_provider.dart'; + +import '../providers/audio_provider.dart'; class MuteButton extends StatelessWidget { const MuteButton({super.key}); @override Widget build(BuildContext context) { - WorkoutProvider workoutProvider = context.watch(); + AudioProvider workoutProvider = context.watch(); return IconButton( onPressed: workoutProvider.isMuted diff --git a/lib/widgets/workout_form.dart b/lib/widgets/workout_form.dart index a176cd0..3e75882 100644 --- a/lib/widgets/workout_form.dart +++ b/lib/widgets/workout_form.dart @@ -1,21 +1,26 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:smoke_cess_app/providers/audio_provider.dart'; import '../providers/timer_provider.dart'; import '../providers/workout_provider.dart'; import 'mute_button.dart'; import 'workout_timer_widget.dart'; class WorkoutForm extends StatelessWidget { - const WorkoutForm({super.key}); + WorkoutForm({super.key}); + + final TimerProvider timerProvider = TimerProvider(); + final AudioProvider audioProvider = AudioProvider(); @override Widget build(BuildContext context) { - TimerProvider timerProvider = TimerProvider(); return MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => timerProvider), + ChangeNotifierProvider(create: (context) => audioProvider), ChangeNotifierProvider( - create: (context) => WorkoutProvider(timerProvider)), + create: (context) => + WorkoutProvider(timerProvider, audioProvider)), ], child: Column( mainAxisAlignment: MainAxisAlignment.center, diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index cc89bd1..0000000 --- a/pubspec.lock +++ /dev/null @@ -1,610 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - args: - dependency: transitive - description: - name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - async: - dependency: transitive - description: - name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.dev" - source: hosted - version: "2.10.0" - audioplayers: - dependency: "direct main" - description: - name: audioplayers - sha256: "16451eab798b23ad9307aef6f9ca62bb8fb06542af8810eead0d236d3fd40a42" - url: "https://pub.dev" - source: hosted - version: "3.0.1" - audioplayers_android: - dependency: transitive - description: - name: audioplayers_android - sha256: b2c833e6f718b6b030454e329931229afafe9327fdb002874dd544dc8bf2484d - url: "https://pub.dev" - source: hosted - version: "2.0.0" - audioplayers_darwin: - dependency: transitive - description: - name: audioplayers_darwin - sha256: e7a3c8759bf11ecfe4b20df338bf9f3d37c7719a5761c46a3833aba0ceeaacff - url: "https://pub.dev" - source: hosted - version: "3.0.1" - audioplayers_linux: - dependency: transitive - description: - name: audioplayers_linux - sha256: e95b65e1f4d4764601dac5e65f8d8186fc29401043ab020f1dacec483d708707 - url: "https://pub.dev" - source: hosted - version: "1.0.4" - audioplayers_platform_interface: - dependency: transitive - description: - name: audioplayers_platform_interface - sha256: "178581a44cb685fd798d2108111d2e98cca3400e30b9c3a05546f124fb37f600" - url: "https://pub.dev" - source: hosted - version: "4.0.0" - audioplayers_web: - dependency: transitive - description: - name: audioplayers_web - sha256: "859ba09be2a57e57a787273f18c8cf0d9b61383870c5ee4b5632fe9adbc37edf" - url: "https://pub.dev" - source: hosted - version: "2.2.0" - audioplayers_windows: - dependency: transitive - description: - name: audioplayers_windows - sha256: "622e01c4c357c2aaf1b956c3a0f89d97c3cb40315c03f16e3b6c2a31ff9c38bc" - url: "https://pub.dev" - source: hosted - version: "1.1.3" - awesome_dialog: - dependency: "direct main" - description: - name: awesome_dialog - sha256: ac08268b991f228fc6b8880b68ec030d2941bcc8df8b6a6551fb79f2bd36b7da - url: "https://pub.dev" - source: hosted - version: "3.0.2" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - characters: - dependency: transitive - description: - name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c - url: "https://pub.dev" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 - url: "https://pub.dev" - source: hosted - version: "1.17.0" - crypto: - dependency: transitive - description: - name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" - source: hosted - version: "3.0.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be - url: "https://pub.dev" - source: hosted - version: "1.0.5" - dbus: - dependency: transitive - description: - name: dbus - sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" - url: "https://pub.dev" - source: hosted - version: "0.7.8" - 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: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - file: - dependency: transitive - description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" - source: hosted - version: "6.1.4" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c - url: "https://pub.dev" - source: hosted - version: "2.0.1" - flutter_local_notifications: - dependency: "direct main" - description: - name: flutter_local_notifications - sha256: "293995f94e120c8afce768981bd1fa9c5d6de67c547568e3b42ae2defdcbb4a0" - url: "https://pub.dev" - source: hosted - version: "13.0.0" - flutter_local_notifications_linux: - dependency: transitive - description: - name: flutter_local_notifications_linux - sha256: ccb08b93703aeedb58856e5637450bf3ffec899adb66dc325630b68994734b89 - url: "https://pub.dev" - source: hosted - version: "3.0.0+1" - flutter_local_notifications_platform_interface: - dependency: transitive - description: - name: flutter_local_notifications_platform_interface - sha256: "5ec1feac5f7f7d9266759488bc5f76416152baba9aa1b26fe572246caa00d1ab" - url: "https://pub.dev" - source: hosted - version: "6.0.0" - 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" - graphs: - dependency: transitive - description: - name: graphs - sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - http: - dependency: "direct main" - description: - name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" - url: "https://pub.dev" - source: hosted - version: "0.13.5" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - intl: - dependency: transitive - description: - name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 - url: "https://pub.dev" - source: hosted - version: "0.18.0" - js: - dependency: transitive - description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" - source: hosted - version: "0.6.5" - lints: - dependency: transitive - description: - name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" - url: "https://pub.dev" - source: hosted - version: "0.12.13" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.dev" - source: hosted - version: "0.2.0" - meta: - dependency: transitive - description: - name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" - url: "https://pub.dev" - source: hosted - version: "1.8.0" - mobile_scanner: - dependency: "direct main" - description: - name: mobile_scanner - sha256: "4045e8441e21f1fb8998a76fbffd054510dd3a3b1dee55c7c9a2083eee687345" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - path: - dependency: "direct main" - description: - name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b - url: "https://pub.dev" - source: hosted - version: "1.8.2" - path_provider: - dependency: "direct main" - description: - name: path_provider - sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9" - url: "https://pub.dev" - source: hosted - version: "2.0.13" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: "7623b7d4be0f0f7d9a8b5ee6879fc13e4522d4c875ab86801dee4af32b54b83e" - url: "https://pub.dev" - source: hosted - version: "2.0.23" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: eec003594f19fe2456ea965ae36b3fc967bc5005f508890aafe31fa75e41d972 - url: "https://pub.dev" - source: hosted - version: "2.1.2" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: "525ad5e07622d19447ad740b1ed5070031f7a5437f44355ae915ff56e986429a" - url: "https://pub.dev" - source: hosted - version: "2.1.9" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" - url: "https://pub.dev" - source: hosted - version: "2.0.6" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: "642ddf65fde5404f83267e8459ddb4556316d3ee6d511ed193357e25caa3632d" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" - url: "https://pub.dev" - source: hosted - version: "5.1.0" - platform: - dependency: transitive - description: - name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" - source: hosted - version: "4.2.4" - provider: - dependency: "direct main" - description: - name: provider - sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f - url: "https://pub.dev" - source: hosted - version: "6.0.5" - rive: - dependency: transitive - description: - name: rive - sha256: "22e3755b75f4ea4492d2fecf4fc2acf1c8d0073df39781d290a20cbfe74c3760" - url: "https://pub.dev" - source: hosted - version: "0.9.1" - shared_preferences: - dependency: "direct main" - description: - name: shared_preferences - sha256: ee6257848f822b8481691f20c3e6d2bfee2e9eccb2a3d249907fcfb198c55b41 - url: "https://pub.dev" - source: hosted - version: "2.0.18" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - sha256: a51a4f9375097f94df1c6e0a49c0374440d31ab026b59d58a7e7660675879db4 - url: "https://pub.dev" - source: hosted - version: "2.0.16" - shared_preferences_foundation: - dependency: transitive - description: - name: shared_preferences_foundation - sha256: "6b84fdf06b32bb336f972d373cd38b63734f3461ba56ac2ba01b56d052796259" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - sha256: d7fb71e6e20cd3dfffcc823a28da3539b392e53ed5fc5c2b90b55fdaa8a7e8fa - url: "https://pub.dev" - source: hosted - version: "2.1.4" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - sha256: "824bfd02713e37603b2bdade0842e47d56e7db32b1dcdd1cae533fb88e2913fc" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - sha256: "6737b757e49ba93de2a233df229d0b6a87728cea1684da828cbc718b65dcf9d7" - url: "https://pub.dev" - source: hosted - version: "2.0.5" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - sha256: bd014168e8484837c39ef21065b78f305810ceabc1d4f90be6e3b392ce81b46d - url: "https://pub.dev" - source: hosted - version: "2.1.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" - source: hosted - version: "1.9.1" - sqflite: - dependency: "direct main" - description: - name: sqflite - sha256: "851d5040552cf911f4cabda08d003eca76b27da3ed0002978272e27c8fbf8ecc" - url: "https://pub.dev" - source: hosted - version: "2.2.5" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - sha256: bfd6973aaeeb93475bc0d875ac9aefddf7965ef22ce09790eb963992ffc5183f - url: "https://pub.dev" - source: hosted - version: "2.4.2+2" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - syncfusion_flutter_charts: - dependency: "direct main" - description: - name: syncfusion_flutter_charts - sha256: "6faeb211311559f99f3c816b75aa493e68d1cc263f62dec530d5e8098b71bae4" - url: "https://pub.dev" - source: hosted - version: "20.4.52" - syncfusion_flutter_core: - dependency: transitive - description: - name: syncfusion_flutter_core - sha256: "4319454a92fe5aea1e90ff68c17703a39517ab05dd3074c34c9553e5f7cbf414" - url: "https://pub.dev" - source: hosted - version: "20.4.52" - synchronized: - dependency: transitive - description: - name: synchronized - sha256: "33b31b6beb98100bf9add464a36a8dd03eb10c7a8cf15aeec535e9b054aaf04b" - url: "https://pub.dev" - source: hosted - version: "3.0.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 - url: "https://pub.dev" - source: hosted - version: "0.4.16" - timezone: - dependency: "direct main" - description: - name: timezone - sha256: "24c8fcdd49a805d95777a39064862133ff816ebfffe0ceff110fb5960e557964" - url: "https://pub.dev" - source: hosted - version: "0.9.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - uuid: - dependency: transitive - 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" - win32: - dependency: transitive - description: - name: win32 - sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 - url: "https://pub.dev" - source: hosted - version: "3.1.3" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86 - url: "https://pub.dev" - source: hosted - version: "0.2.0+3" - xml: - dependency: transitive - description: - name: xml - sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" - url: "https://pub.dev" - source: hosted - version: "6.2.2" -sdks: - dart: ">=2.18.2 <3.0.0" - flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index 0c85cc8..690527f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -29,6 +29,11 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0 + flutter_launcher_icons: ^0.12.0 +flutter_icons: + android: 'launcher_icon' + ios: true + image_path: 'assets/ZI_logo.png' flutter: uses-material-design: true