Flutter Android TV 应用程序无法使用 D Pad 进行选择

Posted

技术标签:

【中文标题】Flutter Android TV 应用程序无法使用 D Pad 进行选择【英文标题】:Flutter Android TV app unable to select using D Pad 【发布时间】:2020-12-04 01:38:37 【问题描述】:

我正在使用 Flutter 开发一个 android TV 应用。我能够运行该应用程序(现在是示例应用程序)。但我无法使用 d pad 选择按钮选择任何内容。

我发现我必须使用类似的东西才能实现这一目标

快捷方式(

    shortcuts: 
      LogicalKeySet(LogicalKeyboardKey.select):
          const Intent(ActivateAction.key)
    ,
    child: MaterialApp())

但它在代码中给了我一个错误。我做错了什么?

感谢任何帮助。谢谢。

【问题讨论】:

在 Java 代码中,按钮不是名为 select 而是 center。你在 Flutter 中有一个中心键常量吗? 【参考方案1】:

添加此代码肯定有助于 Android TV OK/Select 按钮,并且可以扩展为其他映射。为 Flutter 1.24-dev 构建并完美运行

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) 
    return Shortcuts(
      shortcuts: <LogicalKeySet, Intent>
        LogicalKeySet(LogicalKeyboardKey.select): const ActivateIntent(),
      ,
      child: MaterialApp( 

【讨论】:

颤振 2.5 不工作。【参考方案2】:

你可以用 RawKeyboardListener 代替 Shortcuts,我使用了下面的代码:

 body: RawKeyboardListener(
        autofocus: true,
        focusNode: _focusNode,
        onKey: _onKey,
        child:Center())
 

    void _onKey(RawKeyEvent e) 
    controls();

    if (e.runtimeType.toString() == 'RawKeyDownEvent') 
      switch (e.logicalKey.debugName) 
        case 'Media Play Pause':
        case 'Select':
          setState(() 
            if (_videoViewController.value.isPlaying) 
              _videoViewController.pause();
             else 
              _videoViewController.play();
            
          );
          break;
      
    `

现在,如果您想要快进或快退,只需将 RawKeyboardListener 与 具体情况来处理。

您也可以使用 D-PAD 键执行此类操作。

【讨论】:

这应该是正确的方式!

以上是关于Flutter Android TV 应用程序无法使用 D Pad 进行选择的主要内容,如果未能解决你的问题,请参考以下文章

Flutter TV 应用的开发尝试 | 开发者说·DTalk

Flutter Android TV 应用程序被拒绝,因为“启动后崩溃”,但它在模拟器和 android 电视上正常工作。你有啥建议吗?

Android TV 应用无法安装在 Android TV 设备上

Android TV 模拟器:无法上网

安装后无法打开 Android TV 应用程序

Android TV 应用程序使用任何带有代码的设备使用网站登录激活