intermediate

This commit is contained in:
Fabian Freund
2025-01-23 14:03:55 +01:00
parent bd45ed64ee
commit 78c17a70c5
122 changed files with 8730 additions and 1662 deletions
@@ -0,0 +1,31 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
DraggableScrollableController useDraggableScrollableController() {
return use(const _DraggableScrollableControllerHook());
}
class _DraggableScrollableControllerHook
extends Hook<DraggableScrollableController> {
const _DraggableScrollableControllerHook();
@override
HookState<DraggableScrollableController, Hook<DraggableScrollableController>>
createState() {
return _DraggableScrollableControllerHookState();
}
}
class _DraggableScrollableControllerHookState extends HookState<
DraggableScrollableController, _DraggableScrollableControllerHook> {
late final _controller = DraggableScrollableController();
@override
DraggableScrollableController build(BuildContext context) => _controller;
@override
void dispose() => _controller.dispose();
@override
String get debugLabel => 'useDraggableScrollableController';
}
@@ -0,0 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
MenuController useMenuController() {
return useMemoized(() => MenuController());
}
@@ -17,10 +17,10 @@ class _OverlayPortalControllerHook extends Hook<OverlayPortalController> {
class _OverlayPortalControllerHookState
extends HookState<OverlayPortalController, _OverlayPortalControllerHook> {
late final controller = OverlayPortalController();
late final _controller = OverlayPortalController();
@override
OverlayPortalController build(BuildContext context) => controller;
OverlayPortalController build(BuildContext context) => _controller;
@override
String get debugLabel => 'useOverlayPortalController';
@@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:lensai/utils/ui_helper.dart' as ui_helper;
import 'package:speech_to_text_google_dialog/speech_to_text_google_dialog.dart';
class SpeechToTextButton extends StatelessWidget {
final Function(dynamic data) onTextReceived;
const SpeechToTextButton({required this.onTextReceived, super.key});
@override
Widget build(BuildContext context) {
return IconButton(
onPressed: () async {
final isServiceAvailable =
await SpeechToTextGoogleDialog.getInstance().showGoogleDialog(
onTextReceived: onTextReceived,
// locale: "en-US",
);
if (!isServiceAvailable) {
if (context.mounted) {
ui_helper.showErrorMessage(
context,
'Service is not available',
);
}
}
},
icon: const Icon(Icons.mic),
);
}
}