diff --git a/veggieseasons/analysis_options.yaml b/veggieseasons/analysis_options.yaml new file mode 100644 index 000000000..f117e8a5f --- /dev/null +++ b/veggieseasons/analysis_options.yaml @@ -0,0 +1,30 @@ +include: package:pedantic/analysis_options.yaml + +analyzer: + strong-mode: + implicit-casts: false + implicit-dynamic: false + +linter: + rules: + - avoid_types_on_closure_parameters + - avoid_void_async + - await_only_futures + - camel_case_types + - cancel_subscriptions + - close_sinks + - constant_identifier_names + - control_flow_in_finally + - empty_statements + - hash_and_equals + - implementation_imports + - non_constant_identifier_names + - package_api_docs + - package_names + - package_prefixed_library_names + - test_types_in_equals + - throw_in_finally + - unnecessary_brace_in_string_interps + - unnecessary_getters_setters + - unnecessary_new + - unnecessary_statements diff --git a/veggieseasons/ios/Podfile.lock b/veggieseasons/ios/Podfile.lock index 7e5a41704..9f4d4ab15 100644 --- a/veggieseasons/ios/Podfile.lock +++ b/veggieseasons/ios/Podfile.lock @@ -19,4 +19,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: e8988baac3a50f787b9d3ed7ca44957b442f92a7 -COCOAPODS: 1.7.0 +COCOAPODS: 1.7.1 diff --git a/veggieseasons/lib/data/preferences.dart b/veggieseasons/lib/data/preferences.dart index 6b81b165e..96f7007a7 100644 --- a/veggieseasons/lib/data/preferences.dart +++ b/veggieseasons/lib/data/preferences.dart @@ -32,19 +32,19 @@ class Preferences extends Model { return Set.from(_preferredCategories); } - void addPreferredCategory(VeggieCategory category) async { + Future<void> addPreferredCategory(VeggieCategory category) async { _preferredCategories.add(category); await _saveToSharedPrefs(); notifyListeners(); } - void removePreferredCategory(VeggieCategory category) async { + Future<void> removePreferredCategory(VeggieCategory category) async { _preferredCategories.remove(category); await _saveToSharedPrefs(); notifyListeners(); } - void setDesiredCalories(int calories) async { + Future<void> setDesiredCalories(int calories) async { _desiredCalories = calories; await _saveToSharedPrefs(); notifyListeners(); diff --git a/veggieseasons/lib/screens/details.dart b/veggieseasons/lib/screens/details.dart index 292bcd2d8..27ba8d7b4 100644 --- a/veggieseasons/lib/screens/details.dart +++ b/veggieseasons/lib/screens/details.dart @@ -23,7 +23,7 @@ class ServingInfoChart extends StatelessWidget { // value of this vitamin" data adjusted for the user's preferred calorie // target. Widget _buildVitaminText(int standardPercentage, Future<int> targetCalories) { - return FutureBuilder( + return FutureBuilder<int>( future: targetCalories, builder: (context, snapshot) { final target = snapshot?.data ?? 2000; @@ -172,7 +172,7 @@ class InfoView extends StatelessWidget { Row( mainAxisSize: MainAxisSize.max, children: <Widget>[ - FutureBuilder( + FutureBuilder<Set<VeggieCategory>>( future: prefs.preferredCategories, builder: (context, snapshot) { return Text( @@ -284,7 +284,7 @@ class _DetailsScreenState extends State<DetailsScreen> { Expanded( child: ListView( children: [ - CupertinoSegmentedControl( + CupertinoSegmentedControl<int>( children: { 0: Text('Facts & Info'), 1: Text('Trivia'), diff --git a/veggieseasons/lib/screens/list.dart b/veggieseasons/lib/screens/list.dart index 5dbd34684..6ff8f5ee5 100644 --- a/veggieseasons/lib/screens/list.dart +++ b/veggieseasons/lib/screens/list.dart @@ -13,7 +13,8 @@ import 'package:veggieseasons/styles.dart'; import 'package:veggieseasons/widgets/veggie_card.dart'; class ListScreen extends StatelessWidget { - Widget _generateVeggieRow(veggie, Preferences prefs, {bool inSeason = true}) { + Widget _generateVeggieRow(Veggie veggie, Preferences prefs, + {bool inSeason = true}) { return Padding( padding: EdgeInsets.only(left: 16, right: 16, bottom: 24), child: FutureBuilder<Set<VeggieCategory>>( diff --git a/veggieseasons/lib/screens/settings.dart b/veggieseasons/lib/screens/settings.dart index 7480837b5..4ecef5284 100644 --- a/veggieseasons/lib/screens/settings.dart +++ b/veggieseasons/lib/screens/settings.dart @@ -126,7 +126,7 @@ class CalorieSettingsScreen extends StatelessWidget { } class SettingsScreen extends StatelessWidget { - Widget _buildCaloriesItem(BuildContext context, Preferences prefs) { + SettingsItem _buildCaloriesItem(BuildContext context, Preferences prefs) { return SettingsItem( label: 'Calorie Target', icon: SettingsIcon( @@ -146,7 +146,7 @@ class SettingsScreen extends StatelessWidget { }, ), onPress: () { - Navigator.of(context).push( + Navigator.of(context).push<void>( CupertinoPageRoute( builder: (context) => CalorieSettingsScreen(), title: 'Calorie Target', @@ -156,7 +156,7 @@ class SettingsScreen extends StatelessWidget { ); } - Widget _buildCategoriesItem(BuildContext context, Preferences prefs) { + SettingsItem _buildCategoriesItem(BuildContext context, Preferences prefs) { return SettingsItem( label: 'Preferred Categories', subtitle: 'What types of veggies you prefer!', @@ -166,7 +166,7 @@ class SettingsScreen extends StatelessWidget { ), content: SettingsNavigationIndicator(), onPress: () { - Navigator.of(context).push( + Navigator.of(context).push<void>( CupertinoPageRoute( builder: (context) => VeggieCategorySettingsScreen(), title: 'Preferred Categories', diff --git a/veggieseasons/lib/widgets/close_button.dart b/veggieseasons/lib/widgets/close_button.dart index ee72a3aa2..1238e094f 100644 --- a/veggieseasons/lib/widgets/close_button.dart +++ b/veggieseasons/lib/widgets/close_button.dart @@ -69,12 +69,12 @@ class _ColorChangingIconState } @override - void forEachTween(visitor) { + void forEachTween(TweenVisitor<dynamic> visitor) { _colorTween = visitor( _colorTween, widget.color, - (dynamic value) => ColorTween(begin: value), - ); + (dynamic value) => ColorTween(begin: value as Color), + ) as ColorTween; } } diff --git a/veggieseasons/lib/widgets/settings_group.dart b/veggieseasons/lib/widgets/settings_group.dart index 0687ffd05..921ad57e7 100644 --- a/veggieseasons/lib/widgets/settings_group.dart +++ b/veggieseasons/lib/widgets/settings_group.dart @@ -69,7 +69,7 @@ class SettingsGroup extends StatelessWidget { this.header, this.footer, }) : assert(items != null), - assert(items.length > 0); + assert(items.isNotEmpty); final List<SettingsItem> items; final Widget header; diff --git a/veggieseasons/lib/widgets/veggie_card.dart b/veggieseasons/lib/widgets/veggie_card.dart index 3f39887bd..f04f69edc 100644 --- a/veggieseasons/lib/widgets/veggie_card.dart +++ b/veggieseasons/lib/widgets/veggie_card.dart @@ -143,7 +143,7 @@ class VeggieCard extends StatelessWidget { Widget build(BuildContext context) { return PressableCard( onPressed: () { - Navigator.of(context).push(CupertinoPageRoute( + Navigator.of(context).push<void>(CupertinoPageRoute( builder: (context) => DetailsScreen(veggie.id), fullscreenDialog: true, )); diff --git a/veggieseasons/lib/widgets/veggie_headline.dart b/veggieseasons/lib/widgets/veggie_headline.dart index 9d0847320..493a93bf6 100644 --- a/veggieseasons/lib/widgets/veggie_headline.dart +++ b/veggieseasons/lib/widgets/veggie_headline.dart @@ -68,7 +68,7 @@ class VeggieHeadline extends StatelessWidget { @override Widget build(BuildContext context) { return GestureDetector( - onTap: () => Navigator.of(context).push(CupertinoPageRoute( + onTap: () => Navigator.of(context).push<void>(CupertinoPageRoute( builder: (context) => DetailsScreen(veggie.id), fullscreenDialog: true, )), diff --git a/veggieseasons/pubspec.lock b/veggieseasons/pubspec.lock index f0a1d0356..6d31cfcd4 100644 --- a/veggieseasons/pubspec.lock +++ b/veggieseasons/pubspec.lock @@ -7,14 +7,14 @@ packages: name: archive url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.0.10" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "1.5.0" + version: "1.5.2" async: dependency: transitive description: @@ -64,15 +64,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.2" - dart_config: - dependency: transitive - description: - path: "." - ref: HEAD - resolved-ref: a7ed88a4793e094a4d5d5c2d88a89e55510accde - url: "https://github.com/MarkOSullivan94/dart_config.git" - source: git - version: "0.5.0" flutter: dependency: "direct main" description: flutter @@ -84,7 +75,7 @@ packages: name: flutter_launcher_icons url: "https://pub.dartlang.org" source: hosted - version: "0.7.0" + version: "0.7.2+1" flutter_test: dependency: "direct dev" description: flutter @@ -103,14 +94,14 @@ packages: name: image url: "https://pub.dartlang.org" source: hosted - version: "2.0.7" + version: "2.1.4" intl: dependency: "direct main" description: name: intl url: "https://pub.dartlang.org" source: hosted - version: "0.15.7" + version: "0.15.8" matcher: dependency: transitive description: @@ -133,7 +124,7 @@ packages: source: hosted version: "1.6.2" pedantic: - dependency: transitive + dependency: "direct dev" description: name: pedantic url: "https://pub.dartlang.org" @@ -145,7 +136,7 @@ packages: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.2.1" quiver: dependency: transitive description: @@ -166,7 +157,7 @@ packages: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.5.3+1" sky_engine: dependency: transitive description: flutter @@ -234,14 +225,14 @@ packages: name: xml url: "https://pub.dartlang.org" source: hosted - version: "3.3.1" + version: "3.4.1" yaml: dependency: transitive description: name: yaml url: "https://pub.dartlang.org" source: hosted - version: "2.1.15" + version: "2.1.16" sdks: dart: ">=2.3.0-dev <3.0.0" - flutter: ">=0.1.4 <2.0.0" + flutter: ">=1.5.0 <2.0.0" diff --git a/veggieseasons/pubspec.yaml b/veggieseasons/pubspec.yaml index 4fb057ee5..81d48509c 100644 --- a/veggieseasons/pubspec.yaml +++ b/veggieseasons/pubspec.yaml @@ -12,15 +12,16 @@ dependencies: cupertino_icons: ^0.1.2 font_awesome_flutter: ^8.4.0 - intl: ^0.15.7 + intl: ^0.15.8 scoped_model: ^1.0.1 - shared_preferences: ^0.4.3 + shared_preferences: ^0.5.3+1 dev_dependencies: flutter_test: sdk: flutter - flutter_launcher_icons: ^0.7.0 + pedantic: 1.5.0 + flutter_launcher_icons: ^0.7.2+1 flutter: diff --git a/veggieseasons/test/widget_test.dart b/veggieseasons/test/widget_test.dart index 65c35a3e6..f1181b0c4 100644 --- a/veggieseasons/test/widget_test.dart +++ b/veggieseasons/test/widget_test.dart @@ -7,5 +7,5 @@ import 'package:flutter_test/flutter_test.dart'; void main() { - testWidgets('This test always passes', (WidgetTester tester) async {}); + testWidgets('This test always passes', (tester) async {}); }