123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import 'dart:math';
- import 'package:flutter_windmill/views/windmill.dart';
- import 'package:fluttertoast/fluttertoast.dart';
- import 'package:record/record.dart';
- import 'package:flutter/material.dart';
- class HomePage extends StatefulWidget {
- const HomePage({super.key});
- @override
- State<HomePage> createState() => _HomePageState();
- }
- class _HomePageState extends State<HomePage> {
- final Record record = Record();
- double radius = 0;
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- body: Center(
- child: Column(
- children: [
- Text(
- "小风车",
- style: TextStyle(fontSize: 18),
- ),
- Text("用嘴巴吹小风车,用力吹转的越快!"),
- SizedBox(
- height: 300,
- width: 100,
- child: CustomPaint(
- size: const Size(100, 300),
- painter: Windmill(
- radians: radius,
- ),
- ),
- ),
- ],
- ),
- ),
- );
- }
- @override
- void initState() {
- super.initState();
- startRecord();
- }
- @override
- void dispose() {
- super.dispose();
- stopRecord();
- }
- void startRecord() async {
- bool hasPermission = await record.hasPermission();
- if (hasPermission) {
- await record.start();
- record
- ..onStateChanged().listen((event) {
-
- })
- ..onAmplitudeChanged(const Duration(milliseconds: 200)).listen((event) {
- double scale = 1 / event.current;
- final r = (scale * 0.1 * 2 * pi).abs();
- radius += r;
- radius = radius > (2 * pi) ? radius - (2 * pi) : radius;
-
- if (mounted) {
- setState(() {});
- }
- });
- } else {
- Fluttertoast.showToast(msg: '无录音权限');
- }
- }
- void stopRecord() async {
- if (await record.isRecording()) record.dispose();
- }
- }
|