- 1 سال قبل
- علیرضا نصراله زاده
ذخیره استیت (State) صفحات در فلاتر (Flutter)
کدی که به شما ارائه دادم یک StatefulWidget به نام
KeepAlivePage است که از AutomaticKeepAliveClientMixin ارثبری میکند. این کلاس به شما این امکان را میدهد که صفحهها را در فلاتر حفظ کنید، به این ترتیب که هنگام جابهجایی بین صفحات، وضعیت (state) صفحه حفظ شود و دوباره از ابتدا رندر نشود.
در اینجا توضیحاتی در مورد کد آورده شده داریم:
KeepAlivePage یک StatefulWidget است که یک child به عنوان ورودی دریافت میکند.
درون _KeepAlivePageState، super.build(context) فراخوانی میشود تا از AutomaticKeepAliveClientMixin استفاده شود.
در داخل تابع build، ویجت فرزند به عنوان نتیجه بازگردانده میشود.
wantKeepAlive بازگردانده شده true است که نشان میدهد وضعیت (state) این صفحه باید حفظ شود.
اگر این کلاس را به عنوان والد یا مولد صفحات دیگر خود استفاده کنید، میتوانید اطمینان حاصل کنید که وضعیت (state) صفحه به صورت خودکار حفظ شده و هنگامی که کاربر به صفحه باز میگردد، اطلاعات قبلی حفظ میشود.
import 'package:flutter/material.dart';
class KeepAlivePage extends StatefulWidget {
KeepAlivePage({
Key? key,
required this.child,
}) : super(key: key);
final Widget child;
@override
_KeepAlivePageState createState() => _KeepAlivePageState();
}
class _KeepAlivePageState extends State<KeepAlivePage>
with AutomaticKeepAliveClientMixin {
@override
Widget build(BuildContext context) {
super.build(context);
return widget.child;
}
@override
bool get wantKeepAlive => true;
}