In your dart / flutter root directory, open analysis_options.yaml file then add these rules:
linter:
rules:
- always_declare_return_types
- always_put_control_body_on_new_line
- avoid_bool_literals_in_conditional_expressions
- avoid_double_and_int_checks
- avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
- avoid_implementing_value_types
- avoid_js_rounded_ints
- avoid_multiple_declarations_per_line
- avoid_private_typedef_functions
- avoid_redundant_argument_values
- avoid_returning_this
- avoid_setters_without_getters
- avoid_types_on_closure_parameters
- avoid_unused_constructor_parameters
- avoid_void_async
- cast_nullable_to_non_nullable
- combinators_ordering
- conditional_uri_does_not_exist
- directives_ordering
- eol_at_end_of_file
- flutter_style_todos
- join_return_with_assignment
- matching_super_parameters
- no_runtimeType_toString
- noop_primitive_operations
- omit_local_variable_types
- only_throw_errors
- prefer_asserts_in_initializer_lists
- prefer_const_declarations
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_literals_to_create_immutables
- prefer_constructors_over_static_methods
- prefer_expression_function_bodies
- prefer_final_in_for_each
- prefer_final_locals
- prefer_mixin
- prefer_null_aware_method_calls
- prefer_relative_imports
- prefer_single_quotes
- prefer_void_to_null
- sort_constructors_first
- sort_pub_dependencies
- sort_unnamed_constructors_first
- tighten_type_of_initializing_formals
- unawaited_futures
- unnecessary_await_in_return
- unnecessary_breaks
- unnecessary_late
- unnecessary_null_aware_operator_on_extension_on_nullable
- unnecessary_null_checks
- unnecessary_parenthesis
- unnecessary_raw_strings
- unnecessary_statements
- use_enums
- use_if_null_to_convert_nulls_to_bools
- use_is_even_rather_than_modulo
- use_late_for_private_fields_and_variables
- use_named_constants
- use_setters_to_change_properties
- use_string_buffers
- use_test_throws_matchers
- use_to_and_as_if_applicable