当Flutter Webview插件中出现软键盘时,单个孩子的Scoll视图不会向上滚动屏幕

neekobn8  于 2023-01-27  发布在  Flutter
关注(0)|答案(1)|浏览(185)

这是我的主要.dart

class _MyHomePageState extends State {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomInset: true,
      body: SingleChildScrollView(
        child: SizedBox(
          height: MediaQuery.of(context).size.height,
          width: MediaQuery.of(context).size.width,
          child: const WebviewController(),
        ),
      ),
    );
  }

有人知道这个答案吗???
请告诉我你的解决方案。
当软键盘出现在Android中时,我使用独生子滚动视图来滚动我的屏幕。
也使用调整大小,但不起作用。
IOS设备没有问题但只在android设备中...
如果你需要的话,我也会附上webview_controller.dart。

zzlelutf

zzlelutf1#

我也不能只使用SingleChildScrollView使它滚动,但我找到了一个变通办法。我保留了一个标志,当键盘打开,并相应地修改我的小部件。这里是一个例子。

class _MyHomePageState extends State {
bool _keyboardOpen = false;

@override
  void initState() {
    super.initState();
    FocusManager.instance.primaryFocus?.unfocus();
  }

  @override
  Widget build(BuildContext context) {
    _keyboardOpen = MediaQuery.of(context).viewInsets.bottom == 0;
    return Scaffold(
      resizeToAvoidBottomInset: true,
      body: SingleChildScrollView(
        child: SizedBox(
          height: MediaQuery.of(context).size.height,
          width: MediaQuery.of(context).size.width,
          child: Visibility(
          visible: _keyboardOpen,
          child: const SizedBox(
            height: 10,
          ),
        ),
        ),
      ),
    );
  }

在这里你可以在键盘打开时使sizedBox不可见,你也可以在键盘出现时减小文本的大小。

Text('your text', textAlign: TextAlign.center, 
    style: TextStyle(fontSize: (_keyboardOpen)? 22 : 9, fontWeight: 
           FontWeight.w500)
    ),

如果有帮助就告诉我。

相关问题