LCOV - code coverage report
Current view: top level - src/rx - rx_getbuilder.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 35 36 97.2 %
Date: 2020-06-11 02:57:29 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/widgets.dart';
       2             : import 'package:get/src/get_main.dart';
       3             : import 'package:get/src/root/smart_management.dart';
       4             : import 'rx_impl.dart';
       5             : import 'rx_interface.dart';
       6             : 
       7             : class GetX<T extends DisposableInterface> extends StatefulWidget {
       8             :   final Widget Function(T) builder;
       9             :   final bool global;
      10             :   // final Stream Function(T) stream;
      11             :   // final StreamController Function(T) streamController;
      12             :   final bool autoRemove;
      13             :   final bool assignId;
      14             :   final void Function(State state) initState, dispose, didChangeDependencies;
      15             :   final T init;
      16           1 :   const GetX({
      17             :     this.builder,
      18             :     this.global = true,
      19             :     this.autoRemove = true,
      20             :     this.initState,
      21             :     this.assignId = false,
      22             :     //  this.stream,
      23             :     this.dispose,
      24             :     this.didChangeDependencies,
      25             :     this.init,
      26             :     // this.streamController
      27             :   });
      28           2 :   _GetXState<T> createState() => _GetXState<T>();
      29             : }
      30             : 
      31             : class _GetXState<T extends DisposableInterface> extends State<GetX<T>> {
      32             :   RxInterface _observer;
      33             :   T controller;
      34             :   bool isCreator = false;
      35             : 
      36           1 :   _GetXState() {
      37           2 :     _observer = Rx();
      38             :   }
      39             : 
      40           1 :   @override
      41             :   void initState() {
      42           1 :     bool isPrepared = Get.isPrepared<T>();
      43           1 :     bool isRegistred = Get.isRegistred<T>();
      44           2 :     if (widget.global) {
      45             :       if (isPrepared) {
      46           3 :         if (Get().smartManagement != SmartManagement.keepFactory) {
      47           1 :           isCreator = true;
      48             :         }
      49           2 :         controller = Get.find<T>();
      50             :       } else if (isRegistred) {
      51           2 :         controller = Get.find<T>();
      52           1 :         isCreator = false;
      53             :       } else {
      54           3 :         controller = widget.init;
      55           1 :         isCreator = true;
      56           2 :         Get.put<T>(controller);
      57             :       }
      58             :     } else {
      59           3 :       controller = widget.init;
      60           1 :       isCreator = true;
      61           2 :       controller?.onStart();
      62             :     }
      63           2 :     if (widget.initState != null) widget.initState(this);
      64           4 :     if (isCreator && Get().smartManagement == SmartManagement.onlyBuilder) {
      65           0 :       controller?.onStart();
      66             :     }
      67           7 :     _observer.subject.stream.listen((data) => setState(() {}));
      68           1 :     super.initState();
      69             :   }
      70             : 
      71           1 :   @override
      72             :   void dispose() {
      73           2 :     if (widget.dispose != null) widget.dispose(this);
      74           3 :     if (isCreator || widget.assignId) {
      75           3 :       if (widget.autoRemove && Get.isRegistred<T>()) {
      76           1 :         Get.delete<T>();
      77             :       }
      78             :     }
      79             : 
      80           2 :     _observer.close();
      81           1 :     controller = null;
      82           1 :     isCreator = null;
      83           1 :     super.dispose();
      84             :   }
      85             : 
      86           1 :   @override
      87             :   Widget build(BuildContext context) {
      88             :     final observer = getObs;
      89           1 :     getObs = this._observer;
      90           4 :     final result = widget.builder(controller);
      91             :     getObs = observer;
      92             :     return result;
      93             :   }
      94             : }

Generated by: LCOV version 1.14