diff --git a/lib/helpers/app_icon_helper.dart b/lib/helpers/app_icon_helper.dart index ee3f4d3..275b3ea 100644 --- a/lib/helpers/app_icon_helper.dart +++ b/lib/helpers/app_icon_helper.dart @@ -28,6 +28,7 @@ class AppIconHelper { } } else if (Platform.isAndroid) { // change icon on android + // ignore: no_leading_underscores_for_local_identifiers final _androidDynamicIconPlugin = AndroidDynamicIcon(); await _androidDynamicIconPlugin.changeIcon( bundleId: 'hu.refilc.naplo', diff --git a/lib/ui/mobile/goal_planner/goal_complete_modal.dart b/lib/ui/mobile/goal_planner/goal_complete_modal.dart index 0ac6bd2..dfa068c 100644 --- a/lib/ui/mobile/goal_planner/goal_complete_modal.dart +++ b/lib/ui/mobile/goal_planner/goal_complete_modal.dart @@ -10,13 +10,13 @@ import 'package:provider/provider.dart'; class GoalCompleteModal extends StatelessWidget { const GoalCompleteModal( this.subject, { - Key? key, + super.key, required this.user, required this.database, required this.goalAverage, required this.beforeAverage, required this.averageDifference, - }) : super(key: key); + }); final UserProvider user; final DatabaseProvider database; @@ -120,7 +120,7 @@ class GoalCompleteModal extends StatelessWidget { ), Text( 'improved_by'.i18n.fill([ - averageDifference.toStringAsFixed(2) + '%', + '${averageDifference.toStringAsFixed(2)}%', ]), textAlign: TextAlign.center, style: TextStyle( @@ -237,6 +237,7 @@ class GoalCompleteModal extends StatelessWidget { double avgDifference = ((goalAvg - beforeAvg) / beforeAvg.abs()) * 100; return showDialog( + // ignore: use_build_context_synchronously context: context, builder: (context) => GoalCompleteModal( subject, diff --git a/lib/ui/mobile/goal_planner/goal_input.dart b/lib/ui/mobile/goal_planner/goal_input.dart index f440a4e..0d07437 100644 --- a/lib/ui/mobile/goal_planner/goal_input.dart +++ b/lib/ui/mobile/goal_planner/goal_input.dart @@ -5,11 +5,10 @@ import 'package:provider/provider.dart'; class GoalInput extends StatelessWidget { const GoalInput( - {Key? key, + {super.key, required this.currentAverage, required this.value, - required this.onChanged}) - : super(key: key); + required this.onChanged}); final double currentAverage; final double value; diff --git a/lib/ui/mobile/goal_planner/goal_planner_screen.dart b/lib/ui/mobile/goal_planner/goal_planner_screen.dart index 4554d0e..1c463ef 100644 --- a/lib/ui/mobile/goal_planner/goal_planner_screen.dart +++ b/lib/ui/mobile/goal_planner/goal_planner_screen.dart @@ -419,6 +419,7 @@ class _GoalPlannerScreenState extends State { goalPinDates, userId: user.id!); + // ignore: use_build_context_synchronously Navigator.of(context).pop(); }, fillColor: Theme.of(context).colorScheme.primary, diff --git a/lib/ui/mobile/goal_planner/goal_state_screen.dart b/lib/ui/mobile/goal_planner/goal_state_screen.dart index ea47b27..728a04c 100644 --- a/lib/ui/mobile/goal_planner/goal_state_screen.dart +++ b/lib/ui/mobile/goal_planner/goal_state_screen.dart @@ -1,3 +1,5 @@ +// ignore_for_file: use_build_context_synchronously + import 'package:refilc/api/providers/database_provider.dart'; import 'package:refilc/api/providers/user_provider.dart'; import 'package:refilc/helpers/average_helper.dart'; @@ -26,7 +28,7 @@ import 'graph.dart'; class GoalStateScreen extends StatefulWidget { final GradeSubject subject; - const GoalStateScreen({Key? key, required this.subject}) : super(key: key); + const GoalStateScreen({super.key, required this.subject}); @override State createState() => _GoalStateScreenState(); @@ -394,8 +396,7 @@ class _GoalStateScreenState extends State { ), const SizedBox(width: 5.0), Text( - avgDifference.toStringAsFixed(2) + - '%', + '${avgDifference.toStringAsFixed(2)}%', textAlign: TextAlign.center, style: TextStyle( color: avgDifference.isNegative diff --git a/lib/ui/mobile/goal_planner/grade_display.dart b/lib/ui/mobile/goal_planner/grade_display.dart index d35871d..31e3d65 100644 --- a/lib/ui/mobile/goal_planner/grade_display.dart +++ b/lib/ui/mobile/goal_planner/grade_display.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class GradeDisplay extends StatelessWidget { - const GradeDisplay({Key? key, required this.grade}) : super(key: key); + const GradeDisplay({super.key, required this.grade}); final int grade; diff --git a/lib/ui/mobile/goal_planner/graph.dart b/lib/ui/mobile/goal_planner/graph.dart index ddd1cf7..13bb31f 100644 --- a/lib/ui/mobile/goal_planner/graph.dart +++ b/lib/ui/mobile/goal_planner/graph.dart @@ -10,18 +10,17 @@ import 'package:fl_chart/fl_chart.dart'; import 'package:provider/provider.dart'; class GoalGraph extends StatefulWidget { - const GoalGraph(this.data, {Key? key, this.dayThreshold = 7, this.classAvg}) - : super(key: key); + const GoalGraph(this.data, {super.key, this.dayThreshold = 7, this.classAvg}); final List data; final int dayThreshold; final double? classAvg; @override - _GoalGraphState createState() => _GoalGraphState(); + GoalGraphState createState() => GoalGraphState(); } -class _GoalGraphState extends State { +class GoalGraphState extends State { late SettingsProvider settings; List getSpots(List data) { @@ -135,6 +134,7 @@ class _GoalGraphState extends State { ) : ClipRect( child: SizedBox( + height: 158, child: subjectSpots.length > 1 ? Padding( padding: const EdgeInsets.only(top: 8.0, right: 8.0), @@ -242,7 +242,6 @@ class _GoalGraphState extends State { ), ) : null, - height: 158, ), ); } diff --git a/lib/ui/mobile/goal_planner/route_option.dart b/lib/ui/mobile/goal_planner/route_option.dart index 394d1d9..61e2357 100644 --- a/lib/ui/mobile/goal_planner/route_option.dart +++ b/lib/ui/mobile/goal_planner/route_option.dart @@ -8,12 +8,11 @@ enum RouteMark { recommended, fastest } class RouteOption extends StatelessWidget { const RouteOption( - {Key? key, + {super.key, required this.plan, this.mark, this.selected = false, - required this.onSelected}) - : super(key: key); + required this.onSelected}); final Plan plan; final RouteMark? mark; @@ -144,10 +143,10 @@ class RouteOption extends StatelessWidget { class RouteOptionRow extends StatelessWidget { const RouteOptionRow({ - Key? key, + super.key, required this.plan, this.mark, - }) : super(key: key); + }); final Plan plan; final RouteMark? mark; diff --git a/lib/ui/mobile/premium/premium_inline.dart b/lib/ui/mobile/premium/premium_inline.dart index 7c96a9c..cb54955 100644 --- a/lib/ui/mobile/premium/premium_inline.dart +++ b/lib/ui/mobile/premium/premium_inline.dart @@ -1,3 +1,5 @@ +// ignore_for_file: unused_element + import 'package:refilc_plus/ui/mobile/premium/upsell.dart'; import 'package:flutter/material.dart'; diff --git a/lib/ui/mobile/settings/app_icon_screen.dart b/lib/ui/mobile/settings/app_icon_screen.dart index 22ebb75..b85c7c3 100644 --- a/lib/ui/mobile/settings/app_icon_screen.dart +++ b/lib/ui/mobile/settings/app_icon_screen.dart @@ -12,8 +12,7 @@ import 'package:provider/provider.dart'; import 'app_icon_screen.i18n.dart'; class PremiumCustomAppIconMenu extends StatelessWidget { - const PremiumCustomAppIconMenu({Key? key, required this.settings}) - : super(key: key); + const PremiumCustomAppIconMenu({super.key, required this.settings}); final SettingsProvider settings; @@ -43,7 +42,7 @@ class PremiumCustomAppIconMenu extends StatelessWidget { } class ModifyAppIcon extends StatefulWidget { - const ModifyAppIcon({Key? key}) : super(key: key); + const ModifyAppIcon({super.key}); @override State createState() => _ModifyAppIconState(); @@ -167,14 +166,14 @@ class _ModifyAppIconState extends State { class AppIconItem extends StatelessWidget { const AppIconItem({ - Key? key, + super.key, required this.iconName, required this.iconPath, required this.displayName, this.description, required this.selected, required this.selectCallback, - }) : super(key: key); + }); final String iconName; final String iconPath; diff --git a/lib/ui/mobile/settings/settings_helper.dart b/lib/ui/mobile/settings/settings_helper.dart index 51cb01d..efad545 100644 --- a/lib/ui/mobile/settings/settings_helper.dart +++ b/lib/ui/mobile/settings/settings_helper.dart @@ -1,4 +1,3 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart'; import 'package:provider/provider.dart'; @@ -23,10 +22,10 @@ class GradeRarityTextSetting extends StatefulWidget { final List defaultRarities; @override - _GradeRarityTextSettingState createState() => _GradeRarityTextSettingState(); + GradeRarityTextSettingState createState() => GradeRarityTextSettingState(); } -class _GradeRarityTextSettingState extends State { +class GradeRarityTextSettingState extends State { late SettingsProvider settings; late DatabaseProvider db; late UserProvider user; diff --git a/lib/ui/mobile/settings/share_theme.dart b/lib/ui/mobile/settings/share_theme.dart index 987ad7b..de16e26 100644 --- a/lib/ui/mobile/settings/share_theme.dart +++ b/lib/ui/mobile/settings/share_theme.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class PremiumShareTheme extends StatefulWidget { - const PremiumShareTheme({Key? key}) : super(key: key); + const PremiumShareTheme({super.key}); @override State createState() => _PremiumShareThemeState(); diff --git a/pubspec.yaml b/pubspec.yaml index b69c610..b74eb0d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,6 +35,8 @@ dependencies: flutter_dynamic_icon: ^2.1.0 android_dynamic_icon: ^1.0.1 i18n_extension: ^11.0.12 + http: ^1.2.0 + fl_chart: ^0.45.1 dev_dependencies: flutter_lints: ^3.0.1