حفظ وضعیت یک 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;
- }
کار به پایان رسیده است و هم اکنون ویجت شما در فراخوانی های بعدی مقادیر خود را حفظ می کند . این موضوع در صرفه جویی مصرف پهنای باند و سرعت عمل اپلیکیشن اثر مثبتی دارد .
امیدوارم این مطلب برای شما مفید باشد .