حفظ وضعیت یک StatefulWidget
در صورتی که از ویجت های StatefulWidget استفاده می نمایید در برخی مواقع پیش می آید که مایلید وضعیت استیت ها حفظ شوند و مقادیر خود را از دست ندهند . به عنوان مثال زمانی که بین Tab های یک اپلیکیشن در حال جابجایی هستید ، نباید پس از اولین بارگیری اطلاعات ، در نوبت های بعد ، اطلاعات به صورت خودکار مجدد بارگیری شود . در این حالت طبق دستورالعمل زیر عمل نمایید :
۱- دستور (AutomaticKeepAliveClientMixin) را به تعریف State اضافه نمایید .
مانند مثال زیر :
class MyProducts extends StatefulWidget {
@override
_MyProductsState createState() => _MyProductsState();
}
class _MyProductsState extends State<MyProducts> with AutomaticKeepAliveClientMixin<MyProducts>{
@override
// ignore: must_call_super
Widget build(BuildContext context) {
return Container();
}
}
۲- تابع wantKeepAlive را override کنید و برابر true قرار دهید .
مانند مثال زیر :
class MyProducts extends StatefulWidget {
@override
_MyProductsState createState() => _MyProductsState();
}
class _MyProductsState extends State<MyProducts> with AutomaticKeepAliveClientMixin<MyProducts>{
@override
// ignore: must_call_super
Widget build(BuildContext context) {
return Container();
}
@override
// TODO: implement wantKeepAlive
bool get wantKeepAlive => true;
}
کار به پایان رسیده است و هم اکنون ویجت شما در فراخوانی های بعدی مقادیر خود را حفظ می کند . این موضوع در صرفه جویی مصرف پهنای باند و سرعت عمل اپلیکیشن اثر مثبتی دارد .
امیدوارم این مطلب برای شما مفید باشد .