我想在flutter中建立一個安卓電視應用程式,幾乎所有的事情都完成了,但有一個問題是我無法關注(比如一些彈出效果或邊界變化,告訴用戶你現在在這個專案上)專案,我們在串列視圖中迭代。應用程式中我想要的影像
但是我不能給這個焦點。我試著用 FocusScope -> Listview - > focus node 但它在第一個和最后一個索引中沒有給出準確的行為,而且它在有多個串列視圖的主頁中也不起作用。
uj5u.com熱心網友回復:
你應該為 ListView 元素實作一個有狀態的 widget,其中包括一個 FocusNode。
然后你添加一個FocusNode監聽器,它將在每次焦點狀態改變時被呼叫,并在回呼中設定所有你想要改變的視覺引數。
class _FocusableListViewItemState extends State< FocusableListViewItem>
{
FocusNode _node;
顏色_focusBorderColor。
@override
void initState() {
_focusBorderColor = Colors.transparent;
_node.addListener(_onFocusChange)。
}
void _onFocusChange() {
if (_node.hasFocus) {
setState(() {
_focusBorderColor = Colors.white;
});
} else {
setState(() {
_focusBorderColor = Colors.transparent;
});
}
}
}
uj5u.com熱心網友回復:
在嘗試了許多方法之后,我發現了一個簡單而有效的方法,使用InkWell來做這件事。
widget樹看起來像=> Scaffold -> somewidgets -> ListView -> Inkwell -> Carosouls
我們必須用InkWell來包裝widget,并使用 onTap, focusColor, onFocusChange在InkWell中,因為InkWell本身就有焦點。
onFocusChange: (value) {
print(i)。
setState(() {
hoverIndex = i;
widget.selectedIndex = i;
});
},
focusColor: Colors.transparent,
這個改變焦點的函式將在InkWell內,所以它將在用戶每次在ListView中進行互動時呼叫,所以根據i(索引)我們可以分配hoverIndex,根據hoverIndex我們可以改變互動元素的樣式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315702.html
標籤:
上一篇:使用flutter檔案創建一個隨機單詞的串列視圖,每個視圖瓦片上有心形圖示。(請在下面找到問題)
下一篇:顯示四個textField
