Rules / Correctness / unnecessary-flutter-imports
unnecessary-flutter-imports
lint/correctness/unnecessary-flutter-importsrecommendedflutter
Source: FalconDisallow Flutter framework imports that the file does not use.
Flags an import of package:flutter/... or dart:async when the file
contains no reference to any Flutter or async symbol. Such an import
contributes nothing but noise and a misleading dependency signal, usually a
leftover after the code that needed it was deleted. Remove it. Detection is
heuristic: usage is inferred from a curated list of framework identifiers —
widgets, BuildContext, Future/Stream, foundation helpers such as
kDebugMode and ChangeNotifier, and the async/await keywords — rather
than from resolved imports.
Invalid
example.dartdart
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
void main() {
print('Hello World');
}
class MyApp {
void doSomething() {
print('No Flutter symbols used');
}
}
Unnecessary Flutter import. Remove unused imports.
1import 'package:flutter/material.dart';
∙
Unnecessary Flutter import. Remove unused imports.
1import 'package:flutter/material.dart';
2import 'package:flutter/foundation.dart';
∙
Unnecessary Flutter import. Remove unused imports.
2import 'package:flutter/foundation.dart';
3import 'dart:async';
∙
Unnecessary Flutter import. Remove unused imports.
3import 'dart:async';
4import 'package:flutter/services.dart';
∙
Unnecessary Flutter import. Remove unused imports.
4import 'package:flutter/services.dart';
5import 'package:flutter/widgets.dart';
∙
Valid
example.dartdart
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'dart:async';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp();
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
home: Scaffold(
appBar: AppBar(title: const Text('Home')),
body: const Center(
child: Text('Hello'),
),
),
);
}
}
Future<void> asyncExample() async {
await Future.delayed(const Duration(seconds: 1));
debugPrint('Done');
}
// Uses Stream from dart:async
Stream<int> createStream() {
return Stream.fromIterable([1, 2, 3]);
}
// Uses widgets
Widget createButton() {
return ElevatedButton(
onPressed: () {},
child: const Text('Click me'),
);
}
// Uses Color from Flutter
void styleContainer() {
final container = Container(
color: Color.fromARGB(255, 100, 150, 200),
);
}
How to configure
Set the severity of unnecessary-flutter-imports in your falcon.json:
falcon.jsonjson
{
"linter": {
"rules": {
"correctness": {
"unnecessary-flutter-imports": "error"
}
}
}
}