我想制作一个带有游戏手柄的应用程序,我成功制作了点击功能,但是没有像按手动小部件那样的点击效果,
如何让小部件按钮具有类似手动点击的效果?
这是我编写的代码:
// ignore_for_file: unnecessary_brace_in_string_interps
import 'package:flutter/material.dart';
import 'package:gamepads/gamepads.dart';
class _MyHomePageState extends State<MyHomePage> {
int counter = 0;
GlobalKey floatingKey = GlobalKey();
@override
void initState() {
super.initState();
task();
}
Future<void> task() async {
Gamepads.events.listen(gamePadE);
}
void gamePadE(GamepadEvent gamepadEvent) {
try {
FloatingActionButton floatingActionButton = (floatingKey.currentWidget as FloatingActionButton);
floatingActionButton.onPressed!();
setState(() {
counter += 1;
});
} catch (e) {}
}
@override
Widget build(BuildContext context) {
return Scaffold(
// ---
// more code
// ---
floatingActionButton: FloatingActionButton(
key: floatingKey,
onPressed: () {
print("ON PRESSED");
},
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
如何让小部件按钮具有类似手动点击的效果?
您可以将回调移动到函数并调用它:
void onFloatingActionButtonTap() {
print("ON PRESSED");
}
在FAB构造函数中定义它:
floatingActionButton: FloatingActionButton(
key: floatingKey,
onPressed: onFloatingActionButtonTap,
tooltip: 'Increment',
child: const Icon(Icons.add),
)
在游戏手柄事件中使用它:
void gamePadE(GamepadEvent gamepadEvent) {
try {
onFloatingButtonTap();
setState(() {
counter += 1;
});
} catch (e) {}
}