added clicking sounds on button click (#1236)

pull/1544/head
ggurdin 11 months ago committed by GitHub
parent 0b5edffbf9
commit 50b435b7e9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

Binary file not shown.

@ -391,6 +391,8 @@ class Message extends StatelessWidget {
showToolbar(pangeaMessageEvent);
},
color: color,
clickPlayer:
controller.choreographer.clickPlayer,
child:
// Pangea#
Container(
@ -519,6 +521,7 @@ class Message extends StatelessWidget {
controller: controller,
nextEvent: nextEvent,
prevEvent: previousEvent,
isButton: isButton,
// Pangea#
),
if (event.hasAggregatedEvents(

@ -41,6 +41,7 @@ class MessageContent extends StatelessWidget {
final ChatController controller;
final Event? nextEvent;
final Event? prevEvent;
final bool isButton;
// Pangea#
const MessageContent(
@ -55,6 +56,7 @@ class MessageContent extends StatelessWidget {
required this.controller,
this.nextEvent,
this.prevEvent,
this.isButton = false,
// Pangea#
required this.borderRadius,
});
@ -331,6 +333,10 @@ class MessageContent extends StatelessWidget {
return;
}
if (isButton) {
controller.choreographer.clickPlayer.play();
}
controller.showToolbar(
event,
pangeaMessageEvent: pangeaMessageEvent,

@ -17,6 +17,7 @@ import 'package:fluffychat/pangea/models/tokens_event_content_model.dart';
import 'package:fluffychat/pangea/utils/any_state_holder.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:fluffychat/pangea/utils/overlay.dart';
import 'package:fluffychat/pangea/utils/play_click_sound.dart';
import 'package:fluffychat/pangea/widgets/chat/tts_controller.dart';
import 'package:fluffychat/pangea/widgets/igc/paywall_card.dart';
import 'package:flutter/foundation.dart';
@ -42,6 +43,7 @@ class Choreographer {
late AlternativeTranslator altTranslator;
late ErrorService errorService;
final tts = TtsController();
final clickPlayer = ClickPlayer();
bool isFetching = false;
int _timesClicked = 0;
@ -483,6 +485,7 @@ class Choreographer {
_textController.dispose();
trialStream?.cancel();
tts.dispose();
clickPlayer.dispose();
}
LanguageModel? get l2Lang {

@ -0,0 +1,20 @@
import 'package:audioplayers/audioplayers.dart';
class ClickPlayer {
late AudioPlayer _player;
ClickPlayer() {
_player = AudioPlayer();
_player.setPlayerMode(PlayerMode.lowLatency);
_player.setVolume(0.5);
}
Future<void> play() async {
await _player.stop();
_player.play(AssetSource('sounds/click.ogg'));
}
void dispose() {
_player.dispose();
}
}

@ -109,6 +109,8 @@ class ToolbarButtons extends StatelessWidget {
onPressed: enabled
? () => overlayController.updateToolbarMode(mode)
: null,
clickPlayer: overlayController
.widget.chatController.choreographer.clickPlayer,
child: AnimatedContainer(
duration: FluffyThemes.animationDuration,
height: buttonSize,

@ -1,5 +1,6 @@
import 'dart:async';
import 'package:fluffychat/pangea/utils/play_click_sound.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@ -13,6 +14,7 @@ class PressableButton extends StatefulWidget {
final void Function()? onPressed;
final Stream? triggerAnimation;
final ClickPlayer? clickPlayer;
const PressableButton({
required this.borderRadius,
@ -22,6 +24,7 @@ class PressableButton extends StatefulWidget {
this.buttonHeight = 5,
this.depressed = false,
this.triggerAnimation,
this.clickPlayer,
super.key,
});
@ -79,10 +82,11 @@ class PressableButtonState extends State<PressableButton>
if (_animationCompleter != null) {
await _animationCompleter!.future;
}
if (mounted) _controller.reverse();
widget.clickPlayer?.play();
if (!kIsWeb) {
HapticFeedback.mediumImpact();
}
if (mounted) _controller.reverse();
}
void _onTapCancel() {

@ -6,6 +6,7 @@
#include "generated_plugin_registrant.h"
#include <audioplayers_linux/audioplayers_linux_plugin.h>
#include <dynamic_color/dynamic_color_plugin.h>
#include <emoji_picker_flutter/emoji_picker_flutter_plugin.h>
#include <file_selector_linux/file_selector_plugin.h>
@ -20,6 +21,9 @@
#include <window_to_front/window_to_front_plugin.h>
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);
g_autoptr(FlPluginRegistrar) dynamic_color_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin");
dynamic_color_plugin_register_with_registrar(dynamic_color_registrar);

@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
audioplayers_linux
dynamic_color
emoji_picker_flutter
file_selector_linux

@ -7,6 +7,7 @@ import Foundation
import appkit_ui_element_colors
import audio_session
import audioplayers_darwin
import device_info_plus
import dynamic_color
import emoji_picker_flutter
@ -46,6 +47,7 @@ import window_to_front
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AppkitUiElementColorsPlugin.register(with: registry.registrar(forPlugin: "AppkitUiElementColorsPlugin"))
AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin"))
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin"))
EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin"))

@ -97,6 +97,62 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.1.20"
audioplayers:
dependency: "direct main"
description:
name: audioplayers
sha256: c346ba5a39dc208f1bab55fc239855f573d69b0e832402114bf0b793622adc4d
url: "https://pub.dev"
source: hosted
version: "6.1.0"
audioplayers_android:
dependency: transitive
description:
name: audioplayers_android
sha256: de576b890befe27175c2f511ba8b742bec83765fa97c3ce4282bba46212f58e4
url: "https://pub.dev"
source: hosted
version: "5.0.0"
audioplayers_darwin:
dependency: transitive
description:
name: audioplayers_darwin
sha256: e507887f3ff18d8e5a10a668d7bedc28206b12e10b98347797257c6ae1019c3b
url: "https://pub.dev"
source: hosted
version: "6.0.0"
audioplayers_linux:
dependency: transitive
description:
name: audioplayers_linux
sha256: "3d3d244c90436115417f170426ce768856d8fe4dfc5ed66a049d2890acfa82f9"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
audioplayers_platform_interface:
dependency: transitive
description:
name: audioplayers_platform_interface
sha256: "6834dd48dfb7bc6c2404998ebdd161f79cd3774a7e6779e1348d54a3bfdcfaa5"
url: "https://pub.dev"
source: hosted
version: "7.0.0"
audioplayers_web:
dependency: transitive
description:
name: audioplayers_web
sha256: "3609bdf0e05e66a3d9750ee40b1e37f2a622c4edb796cc600b53a90a30a2ace4"
url: "https://pub.dev"
source: hosted
version: "5.0.1"
audioplayers_windows:
dependency: transitive
description:
name: audioplayers_windows
sha256: "8605762dddba992138d476f6a0c3afd9df30ac5b96039929063eceed416795c2"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
badges:
dependency: "direct main"
description:
@ -412,10 +468,10 @@ packages:
dependency: transitive
description:
name: ffi
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.3"
file:
dependency: transitive
description:

@ -6,7 +6,7 @@ description: Learn a language while texting your friends.
# Pangea#
publish_to: none
# On version bump also increase the build number for F-Droid
version: 1.23.17+3576
version: 1.23.18+1
environment:
sdk: ">=3.0.0 <4.0.0"
@ -111,6 +111,7 @@ dependencies:
webrtc_interface: ^1.0.13
# #Pangea
android_intent_plus: ^5.2.0
audioplayers: ^6.1.0
country_picker: ^2.0.25
csv: ^6.0.0
dropdown_button2: ^2.3.9

@ -6,6 +6,7 @@
#include "generated_plugin_registrant.h"
#include <audioplayers_windows/audioplayers_windows_plugin.h>
#include <dynamic_color/dynamic_color_plugin_c_api.h>
#include <emoji_picker_flutter/emoji_picker_flutter_plugin_c_api.h>
#include <file_selector_windows/file_selector_windows.h>
@ -25,6 +26,8 @@
#include <window_to_front/window_to_front_plugin.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
AudioplayersWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin"));
DynamicColorPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("DynamicColorPluginCApi"));
EmojiPickerFlutterPluginCApiRegisterWithRegistrar(

@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
audioplayers_windows
dynamic_color
emoji_picker_flutter
file_selector_windows

Loading…
Cancel
Save