LCOV - code coverage report
Current view: top level - src/state - get_state.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 58 59 98.3 %
Date: 2020-06-23 02:32:54 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/widgets.dart';
       2             : import 'package:get/src/get_instance.dart';
       3             : import 'package:get/src/root/smart_management.dart';
       4             : import 'package:get/src/rx/rx_interface.dart';
       5             : 
       6             : class GetxController extends DisposableInterface {
       7             :   List<Updater> _updaters = [];
       8             : 
       9             :   /// Update GetBuilder with update();
      10           1 :   void update([List<String> ids, bool condition = true]) {
      11             :     if (!condition) return;
      12             :     (ids == null)
      13           3 :         ? _updaters.forEach((rs) {
      14           3 :             rs.updater(() {});
      15             :           })
      16           1 :         : _updaters
      17           4 :             .where((element) => ids.contains(element.id))
      18           5 :             .forEach((rs) => rs.updater(() {}));
      19             :   }
      20             : 
      21           5 :   void onInit() async {}
      22             : 
      23           5 :   void onReady() async {}
      24             : 
      25           5 :   void onClose() async {}
      26             : }
      27             : 
      28             : class GetBuilder<T extends GetxController> extends StatefulWidget {
      29             :   @required
      30             :   final Widget Function(T) builder;
      31             :   final bool global;
      32             :   final String id;
      33             :   final String tag;
      34             :   final bool autoRemove;
      35             :   final bool assignId;
      36             :   final void Function(State state) initState, dispose, didChangeDependencies;
      37             :   final void Function(GetBuilder oldWidget, State state) didUpdateWidget;
      38             :   final T init;
      39           5 :   const GetBuilder({
      40             :     Key key,
      41             :     this.init,
      42             :     this.global = true,
      43             :     this.builder,
      44             :     this.autoRemove = true,
      45             :     this.assignId = false,
      46             :     this.initState,
      47             :     this.tag,
      48             :     this.dispose,
      49             :     this.id,
      50             :     this.didChangeDependencies,
      51             :     this.didUpdateWidget,
      52           1 :   })  : assert(builder != null),
      53           5 :         super(key: key);
      54           5 :   @override
      55           5 :   _GetBuilderState<T> createState() => _GetBuilderState<T>();
      56             : }
      57             : 
      58             : class _GetBuilderState<T extends GetxController> extends State<GetBuilder<T>> {
      59             :   T controller;
      60             :   Updater real;
      61             :   bool isCreator = false;
      62           5 :   @override
      63             :   void initState() {
      64           5 :     super.initState();
      65             : 
      66          10 :     if (widget.global) {
      67          20 :       bool isPrepared = GetInstance().isPrepared<T>(tag: widget.tag);
      68          20 :       bool isRegistred = GetInstance().isRegistred<T>(tag: widget.tag);
      69             : 
      70             :       if (isPrepared) {
      71           2 :         if (GetConfig.smartManagement != SmartManagement.keepFactory) {
      72           1 :           isCreator = true;
      73             :         }
      74           5 :         controller = GetInstance().find<T>(tag: widget.tag);
      75           5 :         real = Updater(updater: setState, id: widget.id);
      76           4 :         controller._updaters.add(real);
      77             :       } else if (isRegistred) {
      78           5 :         controller = GetInstance().find<T>(tag: widget.tag);
      79           1 :         isCreator = false;
      80           5 :         real = Updater(updater: setState, id: widget.id);
      81           4 :         controller._updaters.add(real);
      82             :       } else {
      83          15 :         controller = widget.init;
      84           5 :         isCreator = true;
      85          25 :         real = Updater(updater: setState, id: widget.id);
      86          20 :         controller._updaters.add(real);
      87          25 :         GetInstance().put<T>(controller, tag: widget.tag);
      88             :       }
      89             :     } else {
      90           3 :       controller = widget.init;
      91           1 :       isCreator = true;
      92           5 :       real = Updater(updater: setState, id: widget.id);
      93           4 :       controller._updaters.add(real);
      94           2 :       controller?.onStart();
      95             :     }
      96          19 :     if (widget.initState != null) widget.initState(this);
      97          15 :     if (isCreator && GetConfig.smartManagement == SmartManagement.onlyBuilder) {
      98           0 :       controller?.onStart();
      99             :     }
     100             :   }
     101             : 
     102           5 :   @override
     103             :   void dispose() {
     104           5 :     super.dispose();
     105          19 :     if (widget.dispose != null) widget.dispose(this);
     106           7 :     if (isCreator || widget.assignId) {
     107          30 :       if (widget.autoRemove && GetInstance().isRegistred<T>(tag: widget.tag)) {
     108          20 :         controller._updaters.remove(real);
     109          20 :         GetInstance().delete<T>(tag: widget.tag);
     110             :       }
     111             :     } else {
     112           4 :       controller._updaters.remove(real);
     113             :     }
     114             :   }
     115             : 
     116           5 :   @override
     117             :   void didChangeDependencies() {
     118           5 :     super.didChangeDependencies();
     119          10 :     if (widget.didChangeDependencies != null)
     120           3 :       widget.didChangeDependencies(this);
     121             :   }
     122             : 
     123           2 :   @override
     124             :   void didUpdateWidget(GetBuilder oldWidget) {
     125           2 :     super.didUpdateWidget(oldWidget);
     126           4 :     if (widget.didUpdateWidget != null) widget.didUpdateWidget(oldWidget, this);
     127             :   }
     128             : 
     129           5 :   @override
     130             :   Widget build(BuildContext context) {
     131          20 :     return widget.builder(controller);
     132             :   }
     133             : }
     134             : 
     135             : class Updater {
     136             :   final StateSetter updater;
     137             :   final String id;
     138           5 :   const Updater({this.updater, this.id});
     139             : }

Generated by: LCOV version 1.14