Skip to content
Snippets Groups Projects
Commit 6e26aa6a authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Use flutter_custom_toolbox for common features

parent b9198a87
No related branches found
No related tags found
1 merge request!13Resolve "Use flutter_custom_toolbox for common features"
Pipeline #6478 passed
Showing
with 24 additions and 156 deletions
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/models/data/picture.dart'; import 'package:stopmotion/models/data/picture.dart';
import 'package:stopmotion/models/settings/settings_activity.dart'; import 'package:stopmotion/models/settings/settings_activity.dart';
import 'package:stopmotion/models/settings/settings_global.dart'; import 'package:stopmotion/models/settings/settings_global.dart';
import 'package:stopmotion/utils/tools.dart';
class Activity { class Activity {
Activity({ Activity({
......
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/config/default_activity_settings.dart'; import 'package:stopmotion/config/default_activity_settings.dart';
import 'package:stopmotion/utils/tools.dart';
class ActivitySettings { class ActivitySettings {
final String movieType; final String movieType;
......
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/config/default_global_settings.dart'; import 'package:stopmotion/config/default_global_settings.dart';
import 'package:stopmotion/utils/tools.dart';
class GlobalSettings { class GlobalSettings {
String skin; String skin;
......
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
class AppHeader extends StatelessWidget {
const AppHeader({super.key, required this.text});
final String text;
@override
Widget build(BuildContext context) {
return Text(
tr(text),
textAlign: TextAlign.start,
style: Theme.of(context).textTheme.headlineMedium!.apply(fontWeightDelta: 2),
);
}
}
class AppTitle extends StatelessWidget {
const AppTitle({super.key, required this.text});
final String text;
@override
Widget build(BuildContext context) {
return Text(
tr(text),
textAlign: TextAlign.start,
style: Theme.of(context).textTheme.titleLarge!.apply(fontWeightDelta: 2),
);
}
}
import 'package:flutter/material.dart';
import 'package:stopmotion/utils/color_extensions.dart';
class OutlinedText extends StatelessWidget {
const OutlinedText({
super.key,
required this.text,
required this.fontSize,
required this.textColor,
this.outlineColor,
});
final String text;
final double fontSize;
final Color textColor;
final Color? outlineColor;
@override
Widget build(BuildContext context) {
final double delta = fontSize / 30;
return Text(
text,
style: TextStyle(
inherit: true,
fontSize: fontSize,
fontWeight: FontWeight.w600,
color: textColor,
shadows: [
Shadow(
offset: Offset(-delta, -delta),
color: outlineColor ?? textColor.darken(),
),
Shadow(
offset: Offset(delta, -delta),
color: outlineColor ?? textColor.darken(),
),
Shadow(
offset: Offset(delta, delta),
color: outlineColor ?? textColor.darken(),
),
Shadow(
offset: Offset(-delta, delta),
color: outlineColor ?? textColor.darken(),
),
],
),
);
}
}
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/config/activity_page.dart'; import 'package:stopmotion/config/activity_page.dart';
import 'package:stopmotion/cubit/nav_cubit_pages.dart'; import 'package:stopmotion/cubit/nav_cubit_pages.dart';
...@@ -36,7 +35,7 @@ class BottomNavBar extends StatelessWidget { ...@@ -36,7 +35,7 @@ class BottomNavBar extends StatelessWidget {
return BottomNavigationBar( return BottomNavigationBar(
currentIndex: state, currentIndex: state,
onTap: (int index) => context.read<NavCubitPage>().updateIndex(index), onTap: (int index) => BlocProvider.of<NavCubitPage>(context).updateIndex(index),
type: BottomNavigationBarType.fixed, type: BottomNavigationBarType.fixed,
elevation: 0, elevation: 0,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/config/screen.dart'; import 'package:stopmotion/config/screen.dart';
import 'package:stopmotion/cubit/activity_cubit.dart'; import 'package:stopmotion/cubit/activity_cubit.dart';
import 'package:stopmotion/cubit/nav_cubit_screens.dart'; import 'package:stopmotion/cubit/nav_cubit_screens.dart';
import 'package:stopmotion/ui/helpers/app_titles.dart';
class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget { class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget {
const GlobalAppBar({super.key}); const GlobalAppBar({super.key});
...@@ -21,7 +20,7 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget { ...@@ -21,7 +20,7 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget {
// go to Settings page // go to Settings page
menuActions.add(ElevatedButton( menuActions.add(ElevatedButton(
onPressed: () { onPressed: () {
context.read<NavCubitScreen>().goToSettingsPage(); BlocProvider.of<NavCubitScreen>(context).goToSettingsPage();
}, },
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
shape: const CircleBorder(), shape: const CircleBorder(),
...@@ -32,7 +31,7 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget { ...@@ -32,7 +31,7 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget {
// go to About page // go to About page
menuActions.add(ElevatedButton( menuActions.add(ElevatedButton(
onPressed: () { onPressed: () {
context.read<NavCubitScreen>().goToAboutPage(); BlocProvider.of<NavCubitScreen>(context).goToAboutPage();
}, },
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
shape: const CircleBorder(), shape: const CircleBorder(),
...@@ -43,7 +42,7 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget { ...@@ -43,7 +42,7 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget {
// back to Home page // back to Home page
menuActions.add(ElevatedButton( menuActions.add(ElevatedButton(
onPressed: () { onPressed: () {
context.read<NavCubitScreen>().goToActivityPage(); BlocProvider.of<NavCubitScreen>(context).goToActivityPage();
}, },
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
shape: const CircleBorder(), shape: const CircleBorder(),
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/cubit/activity_cubit.dart'; import 'package:stopmotion/cubit/activity_cubit.dart';
import 'package:stopmotion/ui/widgets/take_picture_widget.dart'; import 'package:stopmotion/ui/widgets/take_picture_widget.dart';
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/cubit/activity_cubit.dart'; import 'package:stopmotion/cubit/activity_cubit.dart';
import 'package:stopmotion/models/activity/activity.dart'; import 'package:stopmotion/models/activity/activity.dart';
import 'package:stopmotion/ui/helpers/outlined_text_widget.dart';
import 'package:stopmotion/utils/color_extensions.dart';
class PageHome extends StatelessWidget { class PageHome extends StatelessWidget {
const PageHome({super.key}); const PageHome({super.key});
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/cubit/activity_cubit.dart'; import 'package:stopmotion/cubit/activity_cubit.dart';
import 'package:stopmotion/models/activity/activity.dart'; import 'package:stopmotion/models/activity/activity.dart';
import 'package:stopmotion/ui/helpers/outlined_text_widget.dart';
import 'package:stopmotion/utils/color_extensions.dart';
class PagePlayer extends StatelessWidget { class PagePlayer extends StatelessWidget {
const PagePlayer({super.key}); const PagePlayer({super.key});
......
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/ui/helpers/app_titles.dart';
class ScreenAbout extends StatelessWidget { class ScreenAbout extends StatelessWidget {
const ScreenAbout({super.key}); const ScreenAbout({super.key});
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/config/activity_page.dart'; import 'package:stopmotion/config/activity_page.dart';
import 'package:stopmotion/cubit/nav_cubit_pages.dart'; import 'package:stopmotion/cubit/nav_cubit_pages.dart';
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/ui/settings/settings_form.dart'; import 'package:stopmotion/ui/settings/settings_form.dart';
import 'package:stopmotion/ui/helpers/app_titles.dart';
class ScreenSettings extends StatelessWidget { class ScreenSettings extends StatelessWidget {
const ScreenSettings({super.key}); const ScreenSettings({super.key});
......
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:unicons/unicons.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/ui/settings/theme_card.dart'; import 'package:stopmotion/ui/settings/theme_card.dart';
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/cubit/theme_cubit.dart'; import 'package:stopmotion/cubit/theme_cubit.dart';
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/config/screen.dart'; import 'package:stopmotion/config/screen.dart';
import 'package:stopmotion/cubit/nav_cubit_screens.dart'; import 'package:stopmotion/cubit/nav_cubit_screens.dart';
......
...@@ -2,10 +2,9 @@ import 'dart:io'; ...@@ -2,10 +2,9 @@ import 'dart:io';
import 'package:camera/camera.dart'; import 'package:camera/camera.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:unicons/unicons.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/utils/picture_storage.dart'; import 'package:stopmotion/utils/picture_storage.dart';
import 'package:stopmotion/utils/tools.dart';
class TakePictureWidget extends StatefulWidget { class TakePictureWidget extends StatefulWidget {
const TakePictureWidget({super.key}); const TakePictureWidget({super.key});
......
import 'dart:ui';
extension ColorExtension on Color {
Color darken([int percent = 40]) {
assert(1 <= percent && percent <= 100);
final value = 1 - percent / 100;
return Color.fromARGB(
alpha,
(red * value).round(),
(green * value).round(),
(blue * value).round(),
);
}
Color lighten([int percent = 40]) {
assert(1 <= percent && percent <= 100);
final value = percent / 100;
return Color.fromARGB(
alpha,
(red + ((255 - red) * value)).round(),
(green + ((255 - green) * value)).round(),
(blue + ((255 - blue) * value)).round(),
);
}
Color avg(Color other) {
final red = (this.red + other.red) ~/ 2;
final green = (this.green + other.green) ~/ 2;
final blue = (this.blue + other.blue) ~/ 2;
final alpha = (this.alpha + other.alpha) ~/ 2;
return Color.fromARGB(alpha, red, green, blue);
}
}
import 'dart:io'; import 'dart:io';
import 'package:path/path.dart'; import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/utils/tools.dart';
class PictureStorage { class PictureStorage {
Future<String> get _localPath async { Future<String> get _localPath async {
......
import 'package:flutter/foundation.dart';
void printlog(String message) {
if (!kReleaseMode) {
debugPrint(message);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment