。。
import 'dart:math';
import 'package:flutter/material.dart';
class DiscData {
static final _rng = Random();
final double size;
final Color color;
final Alignment alignment;
DiscData()
: size = _rng.nextDouble() * 40 + 10,
color = Color.fromARGB(
_rng.nextInt(200),
_rng.nextInt(255),
_rng.nextInt(255),
_rng.nextInt(255),
),
alignment = Alignment(
_rng.nextDouble() * 2 - 1,
_rng.nextDouble() * 2 - 1,
);
}
void main() async {
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Container(
color: Color(0xFF15202D),
child: SizedBox.expand(
child: VariousDiscs(50),
),
),
),
),
);
}
class VariousDiscs extends StatefulWidget {
final int numberOfDiscs;
VariousDiscs(this.numberOfDiscs);
@override
_VariousDiscsState createState() => _VariousDiscsState();
}
class _VariousDiscsState extends State<VariousDiscs> {
bool selected = false;
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
setState(() {
selected = !selected;
});
},
child: Center(
child: Container(
width: 250.0,
height: 250.0,
color: Colors.red,
child: AnimatedAlign(
alignment: selected ? Alignment.topRight : Alignment.bottomLeft,
duration: const Duration(seconds: 1),
curve: Curves.fastOutSlowIn,
child: const FlutterLogo(size: 50.0),
),
),
),
);
}
}