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

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

Generated by: LCOV version 1.14