IndexedStack은 모든 각각의 텝 내용을 한번에 인스턴스를 생성하기 때문에 자원낭비가 있으므로 사용하지 말고,

각각의 Tab을 구성하는 StatefulWidget에 AutomaticKeepAliveClientMixin를 상속받아 상태를 유지하도록한다.

 

class MapPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _MapPage();
}

class _MapPage extends State<MapPage> with AutomaticKeepAliveClientMixin {

  @override
  bool get wantKeepAlive => true;

  @override
  Widget build(BuildContext context) {
    // do not miss this line
    super.build(context);

    return Scaffold(
       ...
    );

}

 

참조 : https://stackoverflow.com/questions/49439047/how-to-preserve-widget-states-in-flutter-when-navigating-using-bottomnavigation