我希望在使用
showModalBottomSheet
打开的 ModalBottomSheet 中显示一些文本字段。
在 iPhone 模拟器上运行时一切正常。但是在设备上运行时单击按钮打开 ModalBottomSheet 时会出现性能问题。
单击按钮会挂起 2-3 秒,然后打开模态表并且没有动画。释放模式并再次打开后,它按预期工作 - 只是第一次出现这种性能影响。
我从模态中的代码中删除了所有内容,并注意到如果模态上有
TextField
,就会发生这种情况。所以我尝试了最简化的代码:
await showModalBottomSheet(
context: context,
isScrollControlled: true,
builder: (context) => TextField()
);
这个简单的代码也会导致我上面描述的性能问题。如果我设置
autofocus
打开键盘,情况会变得更糟(通常单击打开键盘的字段也会持续 1-2 秒)。
我尝试使用
await
和不使用它来运行此代码 - 相同的结果。
我在这里做错了什么?
void _openModalSheet() async{
return showModalBottomSheet(
context: context,
builder: (BuildContext context){
return Form(
child: Padding(
padding: const EdgeInsets.all(25),
child: Column(
children: [
TextFormField(
decoration: const InputDecoration(
border: OutlineInputBorder()
),
),
const SizedBox(height: 20),
TextFormField(
decoration: const InputDecoration(
border: OutlineInputBorder()
),
)
],
),
),
);
}
);
}
我创建了这个基本功能来打开模态底部表单,它在设备和模拟器上都运行良好。