28 lines
631 B
Dart
28 lines
631 B
Dart
import 'package:flutter/material.dart';
|
|
|
|
/// 保持widget 活跃
|
|
/// 使用:KeepAliveWidget(widget);
|
|
class KeepAliveWidget extends StatefulWidget {
|
|
final Widget child;
|
|
|
|
const KeepAliveWidget(this.child, {super.key});
|
|
|
|
@override
|
|
State<KeepAliveWidget> createState() => _KeepAliveState();
|
|
}
|
|
|
|
class _KeepAliveState extends State<KeepAliveWidget> with AutomaticKeepAliveClientMixin {
|
|
@override
|
|
bool get wantKeepAlive => true;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
super.build(context);
|
|
return widget.child;
|
|
}
|
|
}
|
|
|
|
extension KeepWrapper on Widget {
|
|
Widget get keepAlive => KeepAliveWidget(this);
|
|
}
|