Files
FlutterUnit/lib/painter_system/particle/split/particle_split.dart
2022-01-08 20:51:00 +08:00

84 lines
1.8 KiB
Dart

import 'dart:async';
import 'dart:math';
import 'dart:ui';
// import 'dart:ui' as ui;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'particle.dart';
import 'particle_manage.dart';
import 'world_render.dart';
/// create by 张风捷特烈 on 2020/11/5
/// contact me by email 1981462002@qq.com
/// 说明:
class ParticleSplit extends StatefulWidget {
@override
_ParticleSplitState createState() => _ParticleSplitState();
}
class _ParticleSplitState extends State<ParticleSplit> with SingleTickerProviderStateMixin {
late AnimationController _controller;
ParticleManage pm = ParticleManage();
Random random = Random();
@override
void initState() {
super.initState();
pm.addParticle(Particle(
color: Colors.blue,
size: 50,
vx: 4 * random.nextDouble() * pow(-1, random.nextInt(20)),
vy: 4 * random.nextDouble() * pow(-1, random.nextInt(20)),
ay: 0.1,
ax: 0.1,
x: 150,
y: 100));
_controller = AnimationController(
duration: const Duration(seconds: 1),
vsync: this,
)..addListener(pm.tick);
theWorld();
// Future.delayed(Duration(seconds: 1)).then((value){
//
// });
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
void theWorld() {
if (_controller.isAnimating) {
_controller.stop();
} else {
_controller.repeat();
}
}
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (_,constraints){
pm.size = constraints.biggest;
return GestureDetector(
onTap: theWorld,
child: CustomPaint(
size: pm.size,
painter: WorldRender(manage: pm),
),
);
},
);
}
}