slosh 0.1.0
slosh: ^0.1.0 copied to clipboard
Lightweight Flutter playback for baked 2D liquid animations, including waves, sticky droplets, independent colors, and direct seeking.
import 'package:flutter/material.dart';
import 'package:slosh/slosh.dart';
import 'baked_water.dart';
void main() {
// Decode once, then share this asset between players.
final asset = SloshAsset.decode(bakedWater);
runApp(MaterialApp(home: WaterExample(asset: asset)));
}
/// A one-shot liquid animation with an explicit replay button.
class WaterExample extends StatefulWidget {
final SloshAsset asset;
const WaterExample({super.key, required this.asset});
@override
State<WaterExample> createState() => _WaterExampleState();
}
class _WaterExampleState extends State<WaterExample>
with SingleTickerProviderStateMixin {
late final SloshController _controller;
@override
void initState() {
super.initState();
_controller = SloshController(vsync: this, asset: widget.asset);
_controller.play();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(title: const Text('Slosh')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Slosh(
asset: widget.asset,
controller: _controller,
size: 160,
shellColor: Colors.blueGrey,
),
const SizedBox(height: 24),
FilledButton(
onPressed: () {
_controller.seek(0);
_controller.play();
},
child: const Text('Replay'),
),
],
),
),
);
}