ScreenUtilInit 和bottomsheet - 键盘隐藏bottomSheet 文本字段

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

我曾经使用

isScrollControlled: true
padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom)
来修复隐藏的 Bottomsheet 来解决此问题,但最近我开始使用 ScreenUtilInit 来处理响应式内容;但现在,如果使用 ScreenUtilInit 小部件包装我的应用程序,bottomSheet 不会显示在键盘顶部!没有它一切都可以正常工作。

有人可以给我建议吗? (如何避免这种情况,或者响应式内容的更好解决方案)并提前致谢。

这是我的代码:

void main() {
  runApp(
    ScreenUtilInit(
      designSize: Size(375, 812), 
      builder: (context, child) => MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomInset: true,
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          showModalBottomSheet(
            isScrollControlled: true,
            context: context,
            builder: (BuildContext context) {
              return Container(
                padding: EdgeInsets.only(
                    bottom: MediaQuery.of(context).viewInsets.bottom),
                child: Column(
                  mainAxisSize: MainAxisSize.min,
                  children: [
                    TextField(
                      autofocus: true,
                      decoration: InputDecoration(
                          border: InputBorder.none,
                          hintText: 'Enter a search term'),
                    ),
                    SizedBox(height: 5.0),
                    TextField(
                      decoration: InputDecoration(
                          border: InputBorder.none,
                          hintText: 'Enter a search term'),
                    ),
                  ],
                ),
              );
            },
          );
        },
        child: Icon(Icons.add),
      ),
      appBar: AppBar(
        title: Text('Scrollable Sheet Example'),
      ),
      body: Container(
        child: Center(
          child: Text('Main Content'),
        ),
      ),
    );
  }
}
flutter dart keyboard responsive bottom-sheet
1个回答
0
投票

我通过添加

useInheritedMediaQuery: true,
解决了这个问题,如下所示:

void main() {
  runApp(
    ScreenUtilInit(
      designSize: Size(375, 812), 
      useInheritedMediaQuery: true,
      builder: (context, child) => MyApp(),
    ),
  );
}

感谢这个答案这里

© www.soinside.com 2019 - 2024. All rights reserved.