如何以編程方式在 Flutter 中執行按鈕單擊?我基本上想將一些按鈕系結到鍵盤上的鍵,最重要的部分是在按下相應按鈕后觸發按鈕的視覺狀態以通知用戶按下了哪個按鈕。
我知道您可以呼叫該onTap函式,但它本身不會更新按鈕的視覺狀態。有沒有一種方法可以模擬這種行為,我試著研究了一下,MaterialStateController但覺得這不是正確的方法。
uj5u.com熱心網友回復:
我要說的是,您可以使用MaterialStateController來模擬按鈕已被按下。
這可以通過以您選擇的足夠好的方式更新狀態控制器來完成。也許是這樣的:

為此的非優化代碼(您將改為系結到鍵盤上的鍵):
ElevatedButton(
onPressed: () async {
button2StatesController.update(MaterialState.pressed, true);
await Future.delayed(const Duration(milliseconds: 200));
button2StatesController.update(MaterialState.pressed, false);
},
child: const Text('Button 1'),
),
ElevatedButton(
onPressed: () {},
statesController: button2StatesController,
child: const Text('Button 2'),
)
如果不進行更多干預,您將無法模擬 InkWell 效果(據我所知)。就像用你自己的墨水瓶影片等創建你自己的按鈕......
uj5u.com熱心網友回復:
我發現 _InkWellResponseState(內部)類有一個名為simulateTap. 該函式與 ActivateIntent 系結,默認情況下,只要用戶按下Enter或Space
class SimActivateIntent extends ActivateIntent {
const SimActivateIntent (this.model);
final FocusNode model;
}
class SimActivateAction extends Action<SimActivateIntent> {
SimActivateAction ();
@override
void invoke(covariant SimActivateIntentintent) {
Actions.maybeInvoke(intent.model.context!, const ActivateIntent());
}
}
通過上面列出的意圖,可以在特定物件上呼叫 ActivateIntent 并模擬按鈕按下。Shortcuts它們可以使用&Actions類系結到應用程式中。
Map<ShortcutActivator, Intent> get defaultShortcuts {
return <ShortcutActivator, Intent>{
const SingleActivator(LogicalKeyboardKey.backspace):
SimActivateIntent(digitBackspace),
}
}
@override
Widget build(BuildContext context)
{
return Shortcuts(
shortcuts: defaultShortcuts,
child: Actions(
actions: <Type, Action<Intent>>{
SimActivateIntent: SimActivateAction(),
},
child: ...
));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/534982.html
標籤:扑镖按钮模拟按键
