使用 FocusScope.of(context).unfocus() 重建小部件树

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

我有这个例子:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(30),
          child: GestureDetector(
            onTap: () {
              print('Hide keyboard!!!');
              FocusScope.of(context).unfocus();
            },
            child: Column(
              children: [
                Text(DateTime.now().toIso8601String()),
                TextFormField()
              ],
            ),
          ),
        ),
      ),
    );
  }

当键盘出现或隐藏时,它会导致小部件重建。为什么会出现这种情况?

flutter keyboard rebuild
2个回答
9
投票

其实我使用后也找不到重建的原因

FocusScope.of(context).unfocus();

但是这个将帮助您停止重建小部件。

FocusManager.instance.primaryFocus.unfocus();

它正在处理我的应用程序。


0
投票

https://api.flutter.dev/flutter/widgets/FocusNode/unfocus.html

文档中的示例使用

primaryFocus.unfocus
方式。

OutlinedButton(
              child: const Text('UNFOCUS'),
              onPressed: () {
                setState(() {
                  primaryFocus!.unfocus(disposition: disposition);
                });
              },
            ),
© www.soinside.com 2019 - 2024. All rights reserved.