From 46a1cd177cb58abd8dd46952c7a7580a98930706 Mon Sep 17 00:00:00 2001 From: toly <1981462002@qq.com> Date: Tue, 2 May 2023 10:03:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=92=AD=E6=94=BE=E9=9F=B3=E9=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/audio/muyu_1.mp3 | Bin 0 -> 17317 bytes assets/audio/muyu_2.mp3 | Bin 0 -> 5392 bytes assets/audio/muyu_3.mp3 | Bin 0 -> 5481 bytes lib/muyu/muyu_app_bar.dart | 32 +++ lib/muyu/muyu_page.dart | 34 ++- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 4 + pubspec.lock | 238 ++++++++++++++++++ pubspec.yaml | 6 +- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 12 files changed, 308 insertions(+), 15 deletions(-) create mode 100644 assets/audio/muyu_1.mp3 create mode 100644 assets/audio/muyu_2.mp3 create mode 100644 assets/audio/muyu_3.mp3 create mode 100644 lib/muyu/muyu_app_bar.dart diff --git a/assets/audio/muyu_1.mp3 b/assets/audio/muyu_1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..134df63269fb1799f2ccab428fb845c78ed9f268 GIT binary patch literal 17317 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 yd;_TeO;!89~A& literal 0 HcmV?d00001 diff --git a/assets/audio/muyu_2.mp3 b/assets/audio/muyu_2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5d054a8ad4e6ec5bc77f3b8d4c267f20115116c3 GIT binary patch literal 5392 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 RTk7Pvkn^JcpZ~2d@E^I;Ym)!~ literal 0 HcmV?d00001 diff --git a/lib/muyu/muyu_app_bar.dart b/lib/muyu/muyu_app_bar.dart new file mode 100644 index 0000000..8440351 --- /dev/null +++ b/lib/muyu/muyu_app_bar.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class MuyuAppBar extends StatelessWidget implements PreferredSizeWidget { + final VoidCallback onTapHistory; + + const MuyuAppBar({ + Key? key, + required this.onTapHistory, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return AppBar( + elevation: 0, + systemOverlayStyle: const SystemUiOverlayStyle( + statusBarIconBrightness: Brightness.dark, + statusBarColor: Colors.transparent), + backgroundColor: Colors.white, + titleTextStyle: const TextStyle( + color: Colors.black, fontSize: 16, fontWeight: FontWeight.bold), + iconTheme: const IconThemeData(color: Colors.black), + title: const Text("电子木鱼"), + actions: [ + IconButton(onPressed: onTapHistory, icon: const Icon(Icons.history)) + ], + ); + } + + @override + Size get preferredSize => const Size.fromHeight(kToolbarHeight); +} diff --git a/lib/muyu/muyu_page.dart b/lib/muyu/muyu_page.dart index d654d4e..148f60b 100644 --- a/lib/muyu/muyu_page.dart +++ b/lib/muyu/muyu_page.dart @@ -1,10 +1,13 @@ import 'dart:math'; +// import 'package:audioplayers/audioplayers.dart'; +import 'package:flame_audio/flame_audio.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_first_station/muyu/muyu_image.dart'; import 'count_panel.dart'; +import 'muyu_app_bar.dart'; class MuyuPage extends StatefulWidget { const MuyuPage({Key? key}) : super(key: key); @@ -14,25 +17,29 @@ class MuyuPage extends StatefulWidget { } class _MuyuPageState extends State { - int _counter = 0; final Random _random = Random(); + AudioPool? pool; + + @override + void initState() { + super.initState(); + _initAudioPool(); + } + + void _initAudioPool() async { + pool = await FlameAudio.createPool( + 'muyu_1.mp3', + maxPlayers: 1, + ); + } + @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar( - elevation: 0, - systemOverlayStyle: const SystemUiOverlayStyle( - statusBarIconBrightness: Brightness.dark, - statusBarColor: Colors.transparent), - backgroundColor: Colors.white, - titleTextStyle: const TextStyle(color: Colors.black,fontSize: 16,fontWeight: FontWeight.bold), - iconTheme: const IconThemeData(color: Colors.black), - title: const Text("电子木鱼"), - actions: [ - IconButton(onPressed: _toHistory, icon: const Icon(Icons.history)) - ], + appBar: MuyuAppBar( + onTapHistory: _toHistory, ), body: Column( children: [ @@ -61,6 +68,7 @@ class _MuyuPageState extends State { void _onTapSwitchImage() {} void _onKnock() { + pool?.start(); setState(() { int addCount = 1 + _random.nextInt(3); _counter += addCount; diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index e71a16d..1830e5c 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) audioplayers_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "AudioplayersLinuxPlugin"); + audioplayers_linux_plugin_register_with_registrar(audioplayers_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 2e1de87..e9abb91 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + audioplayers_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index cccf817..a9f2f23 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,10 @@ import FlutterMacOS import Foundation +import audioplayers_darwin +import path_provider_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index ab423fe..98793d6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -9,6 +9,62 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.10.0" + audioplayers: + dependency: "direct main" + description: + name: audioplayers + sha256: "6063c05f987596ba7a3dad9bb9a5d8adfa5e7c07b9bae5301b27c11d0b3a239f" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.1" + audioplayers_android: + dependency: transitive + description: + name: audioplayers_android + sha256: fb6bca878ad175d8f6ddc0e0a2d4226d81fa7c10747c12db420e96c7a096b2cc + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.1" + audioplayers_darwin: + dependency: transitive + description: + name: audioplayers_darwin + sha256: c4a56c49347b2e85ac4e1efea218948ca0fba87f04d2a3d3de07ce2410037038 + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.1" + audioplayers_linux: + dependency: transitive + description: + name: audioplayers_linux + sha256: "897e24f190232a3fbb88134b062aa83a9240f55789b5e8d17c114283284ef56b" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + audioplayers_platform_interface: + dependency: transitive + description: + name: audioplayers_platform_interface + sha256: "3a90a46198d375fc7d47bc1d3070c8fd8863b6469b7d87ca80f953efb090f976" + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.0.0" + audioplayers_web: + dependency: transitive + description: + name: audioplayers_web + sha256: "4f5dcbfec0bf98ea09e243d5f5b64ea43a4e6710a2f292724bed16cdba3c691e" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.1" + audioplayers_windows: + dependency: transitive + description: + name: audioplayers_windows + sha256: "010f575653c01ccbe9756050b18df83d89426740e04b684f6438aa26c775a965" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" boolean_selector: dependency: transitive description: @@ -41,6 +97,14 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.17.0" + crypto: + dependency: transitive + description: + name: crypto + sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.2" cupertino_icons: dependency: "direct main" description: @@ -57,6 +121,38 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + file: + dependency: transitive + description: + name: file + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.1.4" + flame: + dependency: transitive + description: + name: flame + sha256: c38e1be5827aa839c166c6ed08a2733bb4523bf153d8c670739c20c842fa1844 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.7.3" + flame_audio: + dependency: "direct main" + description: + name: flame_audio + sha256: "2898e59b36485ee55a0e161a21e7346949030a6b2da948ce25df39f16d2874c0" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.2" flutter: dependency: "direct main" description: flutter @@ -75,6 +171,27 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + http: + dependency: transitive + description: + name: http + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.13.6" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.2" js: dependency: transitive description: @@ -115,6 +232,14 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.8.0" + ordered_set: + dependency: transitive + description: + name: ordered_set + sha256: "3fedcc9121b3ba24c0a84f32da2989c42e36c159b73feadbc2f402dc55966b81" + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.0.1" path: dependency: transitive description: @@ -123,6 +248,78 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.8.2" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: c7edf82217d4b2952b2129a61d3ad60f1075b9299e629e149a8d2e39c2e6aad4 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.14" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.27" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: ad4c4d011830462633f03eb34445a45345673dfd4faf1ab0b4735fbd93b19183 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.2" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.10" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.6" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.6" + platform: + dependency: transitive + description: + name: platform + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.4" + process: + dependency: transitive + description: + name: process + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.2.4" sky_engine: dependency: transitive description: flutter @@ -160,6 +357,14 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.2.0" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.0" term_glyph: dependency: transitive description: @@ -176,6 +381,22 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.4.16" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.1" + uuid: + dependency: transitive + description: + name: uuid + sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.7" vector_math: dependency: transitive description: @@ -184,5 +405,22 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" + win32: + dependency: transitive + description: + name: win32 + sha256: dd8f9344bc305ae2923e3d11a2a911d9a4e2c7dd6fe0ed10626d63211a69676e + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.1.3" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" sdks: dart: ">=2.19.0 <3.0.0" + flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index 4afd5a0..6d90ea1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,8 +30,8 @@ environment: dependencies: flutter: sdk: flutter - - + flame_audio: ^2.0.2 + audioplayers: ^4.0.1 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 @@ -40,6 +40,7 @@ dev_dependencies: flutter_test: sdk: flutter + # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your @@ -56,6 +57,7 @@ flutter: assets: - assets/images/ + - assets/audio/ diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8b6d468..09e8e2c 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + AudioplayersWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index b93c4c3..375535c 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + audioplayers_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST