打开键盘时如何防止小部件重建
How can I prevent the widget rebuilding when opening the keyboard
我有主要 StatefulWidget
,其中包含几个 StatefulWidget
类 TabBarView
喜欢关注
class MyNainClass extends StatefulWidget {
const MyNainClass({Key? key}) : super(key: key);
@override
State<MyNainClass> createState() => _MyNainClassState();
}
class _MyNainClassState extends State<MyNainClass> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
actions: [
TextField() // here is the problem
],
),
body: TabBarView(
children: [
// Here i have several `StatefulWidget` as tabs like 4 ones
// Note: that per claas is contains heavy work code !
MyStatefulWidget1(),
MyStatefulWidget2(),
MyStatefulWidget3(),
MyStatefulWidget4(),
),
);
}
}
好吧,现在每次用户在 TextField
上按 tab 键然后键盘弹出,这会导致小部件重建,这意味着我所有 类 进入 TabBarView
也会重建。
事实上,即使用户选择了任何其他 TextField
,它也会重建整个 类。
在我研究了很多提供程序并且我完全没有使用 setState
让我的应用程序性能良好之后,这让我感到非常失望。
我已经阅读了很多与我类似的问题,但看起来这个问题没有解决方案
发生这种情况是因为 Scaffold
取决于 MediaQuesry
导致键盘屏幕的大小调整更多。
我尝试将 resizeToAvoidBottomInset
设置为 false,但它仍然不能阻止弹出键盘时不需要的重建。
我的 AppBar
搜索栏在我的应用程序中非常活跃,我无法想象如果用户每次都在我有大 类 也将重建。
任何解决键盘弹出时如何防止小部件重建的解决方案都是最受欢迎的
谢谢
您尝试过使用“const TabBarView(...”吗?
我有主要 StatefulWidget
,其中包含几个 StatefulWidget
类 TabBarView
喜欢关注
class MyNainClass extends StatefulWidget {
const MyNainClass({Key? key}) : super(key: key);
@override
State<MyNainClass> createState() => _MyNainClassState();
}
class _MyNainClassState extends State<MyNainClass> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
actions: [
TextField() // here is the problem
],
),
body: TabBarView(
children: [
// Here i have several `StatefulWidget` as tabs like 4 ones
// Note: that per claas is contains heavy work code !
MyStatefulWidget1(),
MyStatefulWidget2(),
MyStatefulWidget3(),
MyStatefulWidget4(),
),
);
}
}
好吧,现在每次用户在 TextField
上按 tab 键然后键盘弹出,这会导致小部件重建,这意味着我所有 类 进入 TabBarView
也会重建。
事实上,即使用户选择了任何其他 TextField
,它也会重建整个 类。
在我研究了很多提供程序并且我完全没有使用 setState
让我的应用程序性能良好之后,这让我感到非常失望。
我已经阅读了很多与我类似的问题,但看起来这个问题没有解决方案
发生这种情况是因为 Scaffold
取决于 MediaQuesry
导致键盘屏幕的大小调整更多。
我尝试将 resizeToAvoidBottomInset
设置为 false,但它仍然不能阻止弹出键盘时不需要的重建。
我的 AppBar
搜索栏在我的应用程序中非常活跃,我无法想象如果用户每次都在我有大 类 也将重建。
任何解决键盘弹出时如何防止小部件重建的解决方案都是最受欢迎的 谢谢
您尝试过使用“const TabBarView(...”吗?