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