Add flutter_lints (#813)

pull/833/head
Brett Morgan 3 years ago committed by GitHub
parent 78dee899ea
commit fc1fe989fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,19 @@
include: package:flutter_lints/flutter.yaml
analyzer:
strong-mode:
implicit-casts: false
implicit-dynamic: false
linter:
rules:
avoid_types_on_closure_parameters: true
avoid_void_async: true
cancel_subscriptions: true
close_sinks: true
directives_ordering: true
package_api_docs: true
package_prefixed_library_names: true
test_types_in_equals: true
throw_in_finally: true
unnecessary_statements: true

@ -17,7 +17,7 @@ void main() {
runApp(
ChangeNotifierProvider.value(
value: model,
child: MyApp(),
child: const MyApp(),
),
);
}
@ -32,17 +32,17 @@ void main() {
class CounterModel extends ChangeNotifier {
CounterModel() {
_channel.setMethodCallHandler(_handleMessage);
_channel.invokeMethod('requestCounter');
_channel.invokeMethod<void>('requestCounter');
}
final _channel = MethodChannel('dev.flutter.example/counter');
final _channel = const MethodChannel('dev.flutter.example/counter');
int _count = 0;
int get count => _count;
void increment() {
_channel.invokeMethod('incrementCounter');
_channel.invokeMethod<void>('incrementCounter');
}
Future<dynamic> _handleMessage(MethodCall call) async {
@ -58,13 +58,15 @@ class CounterModel extends ChangeNotifier {
/// It offers two routes, one suitable for displaying as a full screen and
/// another designed to be part of a larger UI.class MyApp extends StatelessWidget {
class MyApp extends StatelessWidget {
const MyApp({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Module Title',
routes: {
'/': (context) => FullScreenView(),
'/mini': (context) => Contents(),
'/': (context) => const FullScreenView(),
'/mini': (context) => const Contents(),
},
);
}
@ -73,11 +75,13 @@ class MyApp extends StatelessWidget {
/// Wraps [Contents] in a Material [Scaffold] so it looks correct when displayed
/// full-screen.
class FullScreenView extends StatelessWidget {
const FullScreenView({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Full-screen Flutter'),
title: const Text('Full-screen Flutter'),
),
body: const Contents(showExit: true),
);
@ -92,7 +96,7 @@ class FullScreenView extends StatelessWidget {
class Contents extends StatelessWidget {
final bool showExit;
const Contents({this.showExit = false});
const Contents({this.showExit = false, Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -108,7 +112,7 @@ class Contents extends StatelessWidget {
),
),
),
Positioned.fill(
const Positioned.fill(
child: Opacity(
opacity: .25,
child: FittedBox(
@ -126,7 +130,7 @@ class Contents extends StatelessWidget {
'${mediaInfo.size.height.toStringAsFixed(1)}',
style: Theme.of(context).textTheme.headline5,
),
SizedBox(height: 16),
const SizedBox(height: 16),
Consumer<CounterModel>(
builder: (context, model, child) {
return Text(
@ -135,20 +139,20 @@ class Contents extends StatelessWidget {
);
},
),
SizedBox(height: 16),
const SizedBox(height: 16),
Consumer<CounterModel>(
builder: (context, model, child) {
return ElevatedButton(
onPressed: () => model.increment(),
child: Text('Tap me!'),
child: const Text('Tap me!'),
);
},
),
if (showExit) ...[
SizedBox(height: 16),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () => SystemNavigator.pop(animated: true),
child: Text('Exit this screen'),
child: const Text('Exit this screen'),
),
],
],

@ -88,6 +88,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
flutter_test:
dependency: "direct dev"
description: flutter
@ -98,6 +105,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
lints:
dependency: transitive
description:
name: lints
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
matcher:
dependency: transitive
description:

@ -17,6 +17,7 @@ dev_dependencies:
flutter_driver:
sdk: flutter
espresso: ^0.0.1+2
flutter_lints: ^1.0.0
flutter:
uses-material-design: true

@ -10,8 +10,10 @@ import 'package:provider/provider.dart';
class MockCounterModel extends ChangeNotifier implements CounterModel {
int _count = 0;
@override
int get count => _count;
@override
void increment() {
_count++;
notifyListeners();
@ -19,13 +21,13 @@ class MockCounterModel extends ChangeNotifier implements CounterModel {
}
void main() {
testWidgets('MiniView smoke test', (WidgetTester tester) async {
testWidgets('MiniView smoke test', (tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(
MaterialApp(
home: ChangeNotifierProvider<CounterModel>.value(
value: MockCounterModel(),
child: Contents(),
child: const Contents(),
),
),
);

Loading…
Cancel
Save