How can I prevent the widget rebuilding when opening the keyboard


i have main StatefulWidget which contains several StatefulWidget classes by it’s TabBarView
like following

    class MyNainClass extends StatefulWidget {
  const MyNainClass({Key? key}) : super(key: key);

  State<MyNainClass> createState() => _MyNainClassState();

class _MyNainClassState extends State<MyNainClass> {
  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  !

well, now every time user tabbed on the TextField then keyboard pops up so it is causes widget rebuilding , that’s means all my classes into TabBarView do rebuild too .

in the fact even if user tabbed any other TextField it also rebuild the whole classes .

This was a huge disappointment to me after I studied a lot of provider and i completely not using setState to make my app good with performance .

i have read many similar questions like mine but it look like there no solution with this issue

that’s happen because Scaffold depends on MediaQuesry with causes more resize of screen for keyboard .
i tried with resizeToAvoidBottomInset set to false but it still des not prevent unwanted rebuild when keyboard pops up .

my AppBar search bar is very active in my app and i can’t imagine what the horrible results will be effect to my app performance if users tab on it every time special i have big classes will be rebuild too .

any solution to How prevent widget rebuilding when keyboard pops up are most welcome
thank you


have you tried using "const TabBarView(…" ?

Answered By – ArsalanQasim

Answer Checked By – Katrina (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *