admin管理员组文章数量:1390555
When I open the keyboard on one page, it will trigger the rebuild of components on other pages, resulting in frame dropping. How can I avoid triggering the rebuild of other pages? Since invoking the keyboard will affect the size of the current window, I found that components involving MediaQuery in the possible components will all be rebuilt (components such as Scaffold, TabBar, ListView, etc.). How can I make invoking the keyboard on the current page not affect the rebuild of other pages? I have set resizeToAvoidBottomInset to false. This problem has been bothering me for a long time. How can I solve this problem?
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:responsive_sizer_example/homepage.dart';
import 'package:sizer/sizer.dart';
import 'package:flutter/cupertino.dart';
// import 'package:responsive_sizer/responsive_sizer.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Home(),
);
}
}
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('page1')),
body: Column(
children: [
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PageTwo()),
);
},
child: Text('page2')),
Text('This is page1')
],
),
);
}
}
class PageTwo extends StatefulWidget {
const PageTwo();
@override
State<PageTwo> createState() => _PageTwoState();
}
class _PageTwoState extends State<PageTwo> with SingleTickerProviderStateMixin {
late TabController _tabController;
@override
void initState() {
// TODO: implement initState
super.initState();
_tabController = TabController(length: 3, vsync: this);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('page2'),
),
body: Column(
children: [
TabBar(
controller: _tabController,
tabs: const [
Tab(text: 'Tab 1'),
Tab(text: 'Tab 2'),
Tab(text: 'Tab 3'),
],
),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PageThree()),
);
},
child: Text('page3')),
Container(
height: 200,
child: ListView.builder(
itemCount: 2000,
itemExtent: 20,
itemBuilder: (context, index) {
return Container(child: Text('Item $index'),);
},
),
)
],
));
}
}
class PageThree extends StatefulWidget {
const PageThree();
@override
State<PageThree> createState() => _PageThreeState();
}
class _PageThreeState extends State<PageThree> {
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
appBar: AppBar(
title: Text('Input'),
),
body: Column(children: [
Container(
height: 100,
),
CupertinoTextField()
]),
);
}
}
本文标签:
版权声明:本文标题:flutter - A large number of rebuilds are triggered when the keyboard is opened, resulting in sluggishness - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744669632a2618745.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论