delegate_lifecycle_widget.dart 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import 'package:flutter/cupertino.dart';
  2. /// 由于Getx的Controller用了单例,导致无法监听到组件的生命周期,所以用一个StatefulWidget来获取Widget的生命周期
  3. class DelegateLifecycleWidget extends StatefulWidget {
  4. final Widget child;
  5. final Function? onCreateCallback;
  6. final Function? onDestroyCallback;
  7. const DelegateLifecycleWidget({
  8. super.key,
  9. required this.child,
  10. this.onCreateCallback,
  11. this.onDestroyCallback,
  12. });
  13. @override
  14. State<StatefulWidget> createState() {
  15. return _DelegateLifecycleWidgetState();
  16. }
  17. }
  18. class _DelegateLifecycleWidgetState extends State<DelegateLifecycleWidget> {
  19. @override
  20. void initState() {
  21. super.initState();
  22. if (widget.onCreateCallback != null) {
  23. widget.onCreateCallback!();
  24. }
  25. }
  26. @override
  27. void dispose() {
  28. if (widget.onDestroyCallback != null) {
  29. widget.onDestroyCallback!();
  30. }
  31. super.dispose();
  32. }
  33. @override
  34. Widget build(BuildContext context) {
  35. return widget.child;
  36. }
  37. }