mirror of
				https://github.com/flame-engine/flame.git
				synced 2025-10-31 08:56:01 +08:00 
			
		
		
		
	 dbda37b81a
			
		
	
	dbda37b81a
	
	
	
		
			
			This PR adds the following lint rules to our list: ``` always_put_required_named_parameters_first avoid_multiple_declarations_per_line avoid_positional_boolean_parameters avoid_returning_null_for_void avoid_returning_this avoid_unnecessary_containers enable_null_safety library_private_types_in_public_api no_leading_underscores_for_library_prefixes no_leading_underscores_for_local_identifiers prefer_null_aware_method_calls tighten_type_of_initializing_formals unnecessary_late use_setters_to_change_properties ``` And these rules were considered, and some changes were made according to them as a clean-up, but in many places they didn't make sense (`prefer_asserts_with_message` I would have included, but there were too many places that needed to be changes): ``` collection_methods_unrelated_type prefer_asserts_with_message avoid_renaming_method_parameters ```
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flame/experimental.dart';
 | |
| import 'package:flame/game.dart';
 | |
| import 'package:flame_rive/flame_rive.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| 
 | |
| void main() {
 | |
|   runApp(const MyApp());
 | |
| }
 | |
| 
 | |
| class MyApp extends StatefulWidget {
 | |
|   const MyApp({super.key});
 | |
| 
 | |
|   @override
 | |
|   State<MyApp> createState() => _MyAppState();
 | |
| }
 | |
| 
 | |
| class _MyAppState extends State<MyApp> {
 | |
|   late final game = RiveExampleGame();
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return GameWidget(
 | |
|       game: game,
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| class RiveExampleGame extends FlameGame {
 | |
|   @override
 | |
|   Color backgroundColor() {
 | |
|     return const Color(0xFFFFFFFF);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Future<void> onLoad() async {
 | |
|     final skillsArtboard =
 | |
|         await loadArtboard(RiveFile.asset('assets/skills.riv'));
 | |
|     add(SkillsAnimationComponent(skillsArtboard));
 | |
|   }
 | |
| }
 | |
| 
 | |
| class SkillsAnimationComponent extends RiveComponent with TapCallbacks {
 | |
|   SkillsAnimationComponent(Artboard artboard)
 | |
|       : super(
 | |
|           artboard: artboard,
 | |
|           size: Vector2.all(550),
 | |
|         );
 | |
| 
 | |
|   SMIInput<double>? _levelInput;
 | |
| 
 | |
|   @override
 | |
|   void onLoad() {
 | |
|     final controller = StateMachineController.fromArtboard(
 | |
|       artboard,
 | |
|       "Designer's Test",
 | |
|     );
 | |
|     if (controller != null) {
 | |
|       artboard.addController(controller);
 | |
|       _levelInput = controller.findInput<double>('Level');
 | |
|       _levelInput?.value = 0;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   void onTapDown(TapDownEvent event) {
 | |
|     final levelInput = _levelInput;
 | |
|     if (levelInput == null) {
 | |
|       return;
 | |
|     }
 | |
|     levelInput.value = (levelInput.value + 1) % 3;
 | |
|     event.continuePropagation = true;
 | |
|   }
 | |
| }
 |