"Use key in widget constructors" warning each time I create a new widget
Solution 1
Solution 1:
If you don't want to ignore the warning, just do a super.key
FooPage({super.key});
Solution 2:
Open analysis_options.yaml
file which is located at the root of your project:
include: package:flutter_lints/flutter.yaml
# Add these lines
linter:
rules:
use_key_in_widget_constructors: false
Solution 3:
To disable the rule for a specific file, put this line anywhere in your code.
// ignore_for_file: prefer_const_constructors
Solution 4:
As @Sigiria suggested in the comments, you can run:
dart fix --apply
Solution 5:
Recently Flutter team created a new package flutter_lints
and it's added to your analysis_options.yaml
file by default for newly created project.
You can simply remove the following line from your analysis_options.yaml
file:
include: package:flutter_lints/flutter.yaml
However, I would suggest you to at least have some rules in it, for example, you can add these rules (from pedantic
) and remove the one you don't want.
linter:
rules:
- always_declare_return_types
- always_require_non_null_named_parameters
- annotate_overrides
- avoid_init_to_null
- avoid_null_checks_in_equality_operators
- avoid_relative_lib_imports
- avoid_return_types_on_setters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_types_as_parameter_names
- await_only_futures
- camel_case_extensions
- curly_braces_in_flow_control_structures
- empty_catches
- empty_constructor_bodies
- library_names
- library_prefixes
- no_duplicate_case_values
- null_closures
- omit_local_variable_types
- prefer_adjacent_string_concatenation
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_contains
- prefer_equal_for_default_values
- prefer_final_fields
- prefer_for_elements_to_map_fromIterable
- prefer_generic_function_type_aliases
- prefer_if_null_operators
- prefer_inlined_adds
- prefer_is_empty
- prefer_is_not_empty
- prefer_iterable_whereType
- prefer_single_quotes
- prefer_spread_collections
- recursive_getters
- slash_for_doc_comments
- sort_child_properties_last
- type_init_formals
- unawaited_futures
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_getters_setters
- unnecessary_new
- unnecessary_null_in_if_null_operators
- unnecessary_this
- unrelated_type_equality_checks
- unsafe_html
- use_full_hex_values_for_flutter_colors
- use_function_type_syntax_for_parameters
- use_rethrow_when_possible
- valid_regexps
Solution 2
add this in your code right before the @override line
const FooPage({Key? key}) : super(key: key);
always add const before the widget command like EdgeInsets, spacer, SizedBox, BorderRadius etc
Solution 3
You can use prefer_const_constructors : false
in analysis_options.yaml
![iDecode](https://i.stack.imgur.com/8Jlh3.png?s=256&g=1)
iDecode
When developers want to hide something from you, they put it in docs.
Updated on December 30, 2022Comments
-
iDecode over 1 year
I've started getting a warning every time I create a new class.
Use key in widget constructors.
Prefer const with constant constructor.
and so on. Where these errors are coming from and how do I get rid of it?
-
rjh over 2 yearsIn VS Code you can do
Ctrl+.
to 'quick fix' the error and add Key to the class constructor in many cases. That said, i disabled the lint because most of my components are not intended to be re-used and having a key argument is pointless. You can always add one later. -
iDecode over 2 years@rjh Thanks but it wasn't the question about. Even in Android Studio, you can do
control
+enter
to add that code.
-
-
Kristi Jorgji about 2 yearsWhat is the difference between analyzer: errors: and linter.rules
-
Sigiria about 2 yearsIs there any option to solve the warning automatically?
-
iDecode about 2 yearsThere's no automatic way of doing it. I recommend you use solution 1.
-
Sigiria about 2 yearsIt is. You can use: "dart fix --apply". This worked for me