1、参考文章 flutter 基础 —— Focus 组件的使用: https://www.cnblogs.com/lemos/p/16710210.html Flutter 的键盘组件系列 — FocusWidget:https://juejin.cn/post/7128007713501478920 Flutter入门(28):Flutter 组件之 FocusNode 详解:https://www.jianshu.com/p/f02ebc9ab004 Flutter 强制获取焦点的问题:https://blog.csdn.net/kuanxu/article/details/122062514 Flutter 按键事件监听 RawKeyboardListener:https://blog.csdn.net/xyh256/article/details/120731971 Flutter TV Android端开发技巧详细教程:http://www.45fan.com/article.php?aid=1DjvdvtIfP6ajkHd#_lab2_3_0 遇到的问题,在手机上使用触屏时候,焦点问题还不那么明显,如果在TV上面通过按键时候,焦点常常跑到不知道什么地方去,本人在实际开发一个需求时候,页面除了一些固有的可点击控件还有三个ListView,ListView的item可以被焦点选中,当进行切换时候,焦点常常移动到未知的地方,可以使用以下方式进行解决, 下面给出简略解决代码:

FocusNode focusNode1 = FocusNode();

Widget _loadCityList1Widget() {

return Expanded(

flex: nodeListFocusIndex == 0 ? 2 : 1,

child: Focus(

focusNode: focusNode1,

onFocusChange: (focus) {

if (focus) {

_switchListFocus(0);

focusNode1.children.first.requestFocus();//强制第一个节点获取焦点

}

},

child: ListView.builder(

itemCount: nodeList.length,

itemBuilder: (context, index) {

var name = nodeList.elementAt(index).cityName;

return Container(

margin: const EdgeInsets.only(top: 27.5),

decoration: BoxDecoration(

color: node1ListSelectIndex == index

? ColorStore.colorWhite_10

: Colors.transparent),

child: LineItemWidget(

itemIndex: index,

child: _loadText(name),

onPressed: () {

setState(() {

node1ListSelectIndex = index;

});

},

),

);

}),

));

}

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: