init
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
class KeepAliveWrapper extends StatefulWidget {
|
||||
const KeepAliveWrapper({
|
||||
Key? key,
|
||||
this.keepAlive = true,
|
||||
required this.child,
|
||||
}) : super(key: key);
|
||||
final bool keepAlive;
|
||||
final Widget child;
|
||||
|
||||
@override
|
||||
_KeepAliveWrapperState createState() => _KeepAliveWrapperState();
|
||||
}
|
||||
|
||||
class _KeepAliveWrapperState extends State<KeepAliveWrapper> with AutomaticKeepAliveClientMixin {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
super.build(context);
|
||||
return RepaintBoundary(
|
||||
child: widget.child,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant KeepAliveWrapper oldWidget) {
|
||||
if (oldWidget.keepAlive != widget.keepAlive) {
|
||||
// keepAlive 状态需要更新,实现在 AutomaticKeepAliveClientMixin 中
|
||||
updateKeepAlive();
|
||||
}
|
||||
super.didUpdateWidget(oldWidget);
|
||||
}
|
||||
|
||||
@override
|
||||
bool get wantKeepAlive => widget.keepAlive;
|
||||
}
|
||||
Reference in New Issue
Block a user