如何用代码点击现有的flutter widget onTap / onPressed?

问题描述 投票:0回答:1

我想制作一个带有游戏手柄的应用程序,我成功制作了点击功能,但是没有像按手动小部件那样的点击效果,

如何让小部件按钮具有类似手动点击的效果?

这是我编写的代码:

// 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),
      ),
    );
  }
}

如何让小部件按钮具有类似手动点击的效果?

flutter user-interface interaction joystick gamepad
1个回答
0
投票

您可以将回调移动到函数并调用它:

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) {}
  }
© www.soinside.com 2019 - 2024. All rights reserved.