analyzer:
  strong-mode:
    implicit-casts: false
    implicit-dynamic: false
  errors:
    unused_import: error

linter:
  rules:
  - always_put_required_named_parameters_first
  - always_require_non_null_named_parameters
  - annotate_overrides
  # - avoid_annotating_with_dynamic
  - avoid_bool_literals_in_conditional_expressions
  - avoid_catches_without_on_clauses
  - avoid_catching_errors
  - avoid_classes_with_only_static_members
  - avoid_double_and_int_checks
  - avoid_empty_else
  - avoid_field_initializers_in_const_classes
  - avoid_implementing_value_types
  - avoid_init_to_null
  - avoid_js_rounded_ints
  - avoid_null_checks_in_equality_operators
  - avoid_relative_lib_imports
  - avoid_return_types_on_setters
  - avoid_returning_null
  - avoid_returning_null_for_future
  - avoid_returning_null_for_void
  - avoid_returning_this
  - avoid_setters_without_getters
  - avoid_shadowing_type_parameters
  - avoid_single_cascade_in_expression_statements
  - avoid_slow_async_io
  - avoid_types_as_parameter_names
  - avoid_unused_constructor_parameters
  - avoid_void_async
  - await_only_futures
  - camel_case_types
  - cancel_subscriptions
  - close_sinks
  - constant_identifier_names
  - control_flow_in_finally
  - curly_braces_in_flow_control_structures
  - directives_ordering
  - empty_catches
  - empty_constructor_bodies
  - empty_statements
  - file_names
  - hash_and_equals
  - implementation_imports
#  - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811
  - iterable_contains_unrelated_type
  - join_return_with_assignment
  - library_names
  - library_prefixes
  - lines_longer_than_80_chars
  - list_remove_unrelated_type
# - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/sdk/issues/34181
  - no_adjacent_strings_in_list
  - no_duplicate_case_values
  - non_constant_identifier_names
  - null_closures
  - one_member_abstracts
  - only_throw_errors
  - overridden_fields
  - package_api_docs
  - package_names
  - package_prefixed_library_names
  - parameter_assignments
  - prefer_adjacent_string_concatenation
  - prefer_asserts_in_initializer_lists
  - prefer_collection_literals
  - prefer_conditional_assignment
  - prefer_const_constructors
  - prefer_const_constructors_in_immutables
  - prefer_const_declarations
  - prefer_const_literals_to_create_immutables
  - prefer_constructors_over_static_methods
  - prefer_contains
  - prefer_equal_for_default_values
  - prefer_final_fields
  - prefer_final_in_for_each
  - prefer_foreach
  - prefer_function_declarations_over_variables
  - prefer_initializing_formals
  - prefer_is_empty
  - prefer_is_not_empty
  - prefer_iterable_whereType
  # - prefer_mixin
  - prefer_null_aware_operators
  - prefer_single_quotes
  - prefer_typing_uninitialized_variables
  - prefer_void_to_null
  - recursive_getters
  - slash_for_doc_comments
  # - sort_pub_dependencies
  - sort_unnamed_constructors_first
  - test_types_in_equals
  - throw_in_finally
  - type_annotate_public_apis
  - type_init_formals
  - unawaited_futures
  - unnecessary_await_in_return
  - unnecessary_brace_in_string_interps
  - unnecessary_const
  - unnecessary_getters_setters
  - unnecessary_lambdas
  - unnecessary_new
  - unnecessary_null_aware_assignments
  - unnecessary_null_in_if_null_operators
  - unnecessary_overrides
  - unnecessary_parenthesis
  - unnecessary_statements
  - unnecessary_this
  - unrelated_type_equality_checks
  - use_full_hex_values_for_flutter_colors
  - use_rethrow_when_possible
  - use_setters_to_change_properties
  - use_string_buffers
  - use_to_and_as_if_applicable
  - valid_regexps
  - void_checks