mirror of
https://github.com/flame-engine/flame.git
synced 2025-10-28 03:16:09 +08:00
Add flame_lint to examples (#1090)
This commit is contained in:
@ -1,148 +1 @@
|
||||
# Source of linter options:
|
||||
# http://dart-lang.github.io/linter/lints/options/options.html
|
||||
|
||||
analyzer:
|
||||
strong-mode:
|
||||
implicit-casts: false
|
||||
implicit-dynamic: false
|
||||
|
||||
plugins:
|
||||
- dart_code_metrics
|
||||
|
||||
linter:
|
||||
rules:
|
||||
- always_declare_return_types
|
||||
- always_put_control_body_on_new_line
|
||||
- always_require_non_null_named_parameters
|
||||
- annotate_overrides
|
||||
- avoid_double_and_int_checks
|
||||
- avoid_dynamic_calls
|
||||
- avoid_empty_else
|
||||
- avoid_equals_and_hash_code_on_mutable_classes
|
||||
- avoid_escaping_inner_quotes
|
||||
- avoid_field_initializers_in_const_classes
|
||||
- avoid_init_to_null
|
||||
- avoid_js_rounded_ints
|
||||
- avoid_null_checks_in_equality_operators
|
||||
- avoid_private_typedef_functions
|
||||
- avoid_redundant_argument_values
|
||||
- avoid_relative_lib_imports
|
||||
- avoid_return_types_on_setters
|
||||
- avoid_shadowing_type_parameters
|
||||
- avoid_slow_async_io
|
||||
- avoid_type_to_string
|
||||
- avoid_types_as_parameter_names
|
||||
- avoid_unused_constructor_parameters
|
||||
- await_only_futures
|
||||
- camel_case_extensions
|
||||
- camel_case_types
|
||||
- cancel_subscriptions
|
||||
- cast_nullable_to_non_nullable
|
||||
- close_sinks
|
||||
- comment_references
|
||||
- constant_identifier_names
|
||||
- control_flow_in_finally
|
||||
- curly_braces_in_flow_control_structures
|
||||
- directives_ordering
|
||||
- do_not_use_environment
|
||||
- empty_catches
|
||||
- empty_constructor_bodies
|
||||
- empty_statements
|
||||
- exhaustive_cases
|
||||
- file_names
|
||||
- hash_and_equals
|
||||
- implementation_imports
|
||||
- invariant_booleans
|
||||
- iterable_contains_unrelated_type
|
||||
- join_return_with_assignment
|
||||
- library_names
|
||||
- library_prefixes
|
||||
- list_remove_unrelated_type
|
||||
- literal_only_boolean_expressions
|
||||
- missing_whitespace_between_adjacent_strings
|
||||
- no_adjacent_strings_in_list
|
||||
- no_duplicate_case_values
|
||||
- no_runtimeType_toString
|
||||
- omit_local_variable_types
|
||||
- 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_contains
|
||||
- prefer_equal_for_default_values
|
||||
- prefer_final_fields
|
||||
- prefer_final_in_for_each
|
||||
- prefer_final_locals
|
||||
- prefer_for_elements_to_map_fromIterable
|
||||
- prefer_foreach
|
||||
- prefer_function_declarations_over_variables
|
||||
- prefer_generic_function_type_aliases
|
||||
- prefer_if_elements_to_conditional_expressions
|
||||
- prefer_if_null_operators
|
||||
- prefer_initializing_formals
|
||||
- prefer_inlined_adds
|
||||
- prefer_interpolation_to_compose_strings
|
||||
- prefer_is_empty
|
||||
- prefer_is_not_empty
|
||||
- prefer_is_not_operator
|
||||
- prefer_iterable_whereType
|
||||
- prefer_mixin
|
||||
- prefer_null_aware_operators
|
||||
- prefer_single_quotes
|
||||
- prefer_spread_collections
|
||||
- prefer_relative_imports
|
||||
- prefer_typing_uninitialized_variables
|
||||
- prefer_void_to_null
|
||||
- provide_deprecation_message
|
||||
- recursive_getters
|
||||
- slash_for_doc_comments
|
||||
- sort_unnamed_constructors_first
|
||||
- test_types_in_equals
|
||||
- throw_in_finally
|
||||
- type_annotate_public_apis
|
||||
- type_init_formals
|
||||
- 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_raw_strings
|
||||
- unnecessary_statements
|
||||
- unnecessary_string_escapes
|
||||
- unnecessary_string_interpolations
|
||||
- unnecessary_this
|
||||
- use_full_hex_values_for_flutter_colors
|
||||
- use_function_type_syntax_for_parameters
|
||||
- use_is_even_rather_than_modulo
|
||||
- use_rethrow_when_possible
|
||||
- unrelated_type_equality_checks
|
||||
- unsafe_html
|
||||
- void_checks
|
||||
|
||||
dart_code_metrics:
|
||||
rules:
|
||||
#- prefer-trailing-comma TODO(luan) this is broken on NS
|
||||
- prefer-trailing-comma-for-collection
|
||||
- no-equal-then-else
|
||||
- no-object-declaration
|
||||
- potential-null-dereference
|
||||
metrics-exclude:
|
||||
- test/**
|
||||
metrics:
|
||||
number-of-arguments: 8
|
||||
number-of-methods: 32
|
||||
source-lines-of-code: 200
|
||||
cyclomatic-complexity: 36
|
||||
include: package:flame_lint/analysis_options.yaml
|
||||
|
||||
@ -212,12 +212,14 @@ class CollidableSnowman extends MyCollidable {
|
||||
addHitbox(top);
|
||||
addHitbox(middle);
|
||||
addHitbox(bottom);
|
||||
add(randomCollidable(
|
||||
Vector2(size.x / 2, size.y * 0.75),
|
||||
size / 4,
|
||||
Vector2.zero(),
|
||||
screenCollidable,
|
||||
));
|
||||
add(
|
||||
randomCollidable(
|
||||
Vector2(size.x / 2, size.y * 0.75),
|
||||
size / 4,
|
||||
Vector2.zero(),
|
||||
screenCollidable,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import 'package:flame/game.dart';
|
||||
import 'package:flame/src/effects2/move_effect.dart'; // ignore: implementation_imports
|
||||
import 'package:flame/src/effects2/standard_effect_controller.dart'; // ignore: implementation_imports
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../commons/square_component.dart';
|
||||
|
||||
class MoveEffectExample extends FlameGame {
|
||||
@ -36,37 +37,43 @@ class MoveEffectExample extends FlameGame {
|
||||
|
||||
add(
|
||||
SquareComponent(position: Vector2(20, 50), size: 20, paint: paint1)
|
||||
..add(MoveEffect.to(
|
||||
Vector2(380, 50),
|
||||
StandardEffectController(
|
||||
duration: 3,
|
||||
reverseDuration: 3,
|
||||
infinite: true,
|
||||
curve: Curves.easeOut,
|
||||
..add(
|
||||
MoveEffect.to(
|
||||
Vector2(380, 50),
|
||||
StandardEffectController(
|
||||
duration: 3,
|
||||
reverseDuration: 3,
|
||||
infinite: true,
|
||||
curve: Curves.easeOut,
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
);
|
||||
add(
|
||||
SquareComponent(position: Vector2(20, 150), size: 20, paint: paint2)
|
||||
..add(MoveEffect.to(
|
||||
Vector2(380, 150),
|
||||
StandardEffectController(
|
||||
duration: 3,
|
||||
reverseDuration: 3,
|
||||
infinite: true,
|
||||
..add(
|
||||
MoveEffect.to(
|
||||
Vector2(380, 150),
|
||||
StandardEffectController(
|
||||
duration: 3,
|
||||
reverseDuration: 3,
|
||||
infinite: true,
|
||||
),
|
||||
),
|
||||
))
|
||||
..add(MoveEffect.by(
|
||||
Vector2(0, -50),
|
||||
StandardEffectController(
|
||||
duration: 0.25,
|
||||
reverseDuration: 0.25,
|
||||
startDelay: 1,
|
||||
atMinDuration: 2,
|
||||
curve: Curves.ease,
|
||||
infinite: true,
|
||||
)
|
||||
..add(
|
||||
MoveEffect.by(
|
||||
Vector2(0, -50),
|
||||
StandardEffectController(
|
||||
duration: 0.25,
|
||||
reverseDuration: 0.25,
|
||||
startDelay: 1,
|
||||
atMinDuration: 2,
|
||||
curve: Curves.ease,
|
||||
infinite: true,
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
);
|
||||
|
||||
final path1 = Path()..moveTo(200, 250);
|
||||
@ -80,12 +87,13 @@ class MoveEffectExample extends FlameGame {
|
||||
CircleComponent(5)
|
||||
..add(
|
||||
MoveEffect.along(
|
||||
path1,
|
||||
StandardEffectController(
|
||||
duration: 10,
|
||||
startDelay: i * 0.2,
|
||||
infinite: true,
|
||||
)),
|
||||
path1,
|
||||
StandardEffectController(
|
||||
duration: 10,
|
||||
startDelay: i * 0.2,
|
||||
infinite: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
@ -95,14 +103,16 @@ class MoveEffectExample extends FlameGame {
|
||||
add(
|
||||
SquareComponent(size: 10)
|
||||
..paint = (Paint()..color = const Color(0xFF00FFF7))
|
||||
..add(MoveEffect.along(
|
||||
path2,
|
||||
StandardEffectController(
|
||||
duration: 6,
|
||||
startDelay: i * 0.3,
|
||||
infinite: true,
|
||||
..add(
|
||||
MoveEffect.along(
|
||||
path2,
|
||||
StandardEffectController(
|
||||
duration: 6,
|
||||
startDelay: i * 0.3,
|
||||
infinite: true,
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,26 +35,35 @@ class RotateEffectExample extends FlameGame {
|
||||
),
|
||||
);
|
||||
compass.arrow
|
||||
..add(RotateEffect.to(
|
||||
..add(
|
||||
RotateEffect.to(
|
||||
Transform2D.tau,
|
||||
StandardEffectController(
|
||||
duration: 20,
|
||||
infinite: true,
|
||||
)))
|
||||
..add(RotateEffect.by(
|
||||
),
|
||||
),
|
||||
)
|
||||
..add(
|
||||
RotateEffect.by(
|
||||
Transform2D.tau * 0.015,
|
||||
StandardEffectController(
|
||||
duration: 0.1,
|
||||
reverseDuration: 0.1,
|
||||
infinite: true,
|
||||
)))
|
||||
..add(RotateEffect.by(
|
||||
),
|
||||
),
|
||||
)
|
||||
..add(
|
||||
RotateEffect.by(
|
||||
Transform2D.tau * 0.021,
|
||||
StandardEffectController(
|
||||
duration: 0.13,
|
||||
reverseDuration: 0.13,
|
||||
infinite: true,
|
||||
)));
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -428,21 +428,23 @@ class ParticlesGame extends FlameGame with FPSCounter {
|
||||
return AcceleratedParticle(
|
||||
speed: initialSpeed,
|
||||
acceleration: deceleration + gravity,
|
||||
child: ComputedParticle(renderer: (canvas, particle) {
|
||||
final paint = randomElement(paints);
|
||||
// Override the color to dynamically update opacity
|
||||
paint.color = paint.color.withOpacity(1 - particle.progress);
|
||||
child: ComputedParticle(
|
||||
renderer: (canvas, particle) {
|
||||
final paint = randomElement(paints);
|
||||
// Override the color to dynamically update opacity
|
||||
paint.color = paint.color.withOpacity(1 - particle.progress);
|
||||
|
||||
canvas.drawCircle(
|
||||
Offset.zero,
|
||||
// Closer to the end of lifespan particles
|
||||
// will turn into larger glaring circles
|
||||
rnd.nextDouble() * particle.progress > .6
|
||||
? rnd.nextDouble() * (50 * particle.progress)
|
||||
: 2 + (3 * particle.progress),
|
||||
paint,
|
||||
);
|
||||
}),
|
||||
canvas.drawCircle(
|
||||
Offset.zero,
|
||||
// Closer to the end of lifespan particles
|
||||
// will turn into larger glaring circles
|
||||
rnd.nextDouble() * particle.progress > .6
|
||||
? rnd.nextDouble() * (50 * particle.progress)
|
||||
: 2 + (3 * particle.progress),
|
||||
paint,
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
@ -9,7 +9,6 @@ environment:
|
||||
sdk: ">=2.14.0 <3.0.0"
|
||||
flutter: ">=2.5.0"
|
||||
|
||||
|
||||
dependencies:
|
||||
flame:
|
||||
path: ../packages/flame
|
||||
@ -21,6 +20,8 @@ dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
dart_code_metrics: ^3.2.2
|
||||
flame_lint:
|
||||
path: ../packages/flame_lint
|
||||
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
@ -12,11 +12,7 @@ class MyGame extends FlameGame {
|
||||
@override
|
||||
void render(Canvas canvas) {
|
||||
super.render(canvas);
|
||||
svgInstance.renderPosition(
|
||||
canvas,
|
||||
Vector2(100, 200),
|
||||
Vector2.all(300),
|
||||
);
|
||||
svgInstance.renderPosition(canvas, Vector2(100, 200), Vector2.all(300));
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user