LCOV - code coverage report
Current view: top level - src/rx - rx_obx.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 20 20 100.0 %
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/rx/rx_interface.dart';
       3             : import 'rx_impl.dart';
       4             : 
       5           2 : Widget obx(Widget Function() builder) {
       6             :   final b = builder;
       7           2 :   return Obxx(b);
       8             : }
       9             : 
      10             : /// it's very very very very experimental
      11             : class Obxx extends StatelessWidget {
      12             :   final Widget Function() builder;
      13           4 :   Obxx(this.builder, {Key key}) : super(key: key);
      14             :   final RxInterface _observer = Rx();
      15             : 
      16           2 :   @override
      17             :   Widget build(_) {
      18          10 :     _observer.subject.stream.listen((data) => (_ as Element)..markNeedsBuild());
      19             :     final observer = getObs;
      20           2 :     getObs = _observer;
      21           4 :     final result = builder();
      22             :     getObs = observer;
      23             :     return result;
      24             :   }
      25             : }
      26             : 
      27             : class Obx extends StatefulWidget {
      28             :   final Widget Function() builder;
      29             : 
      30           1 :   const Obx(this.builder);
      31           2 :   _ObxState createState() => _ObxState();
      32             : }
      33             : 
      34             : class _ObxState extends State<Obx> {
      35             :   RxInterface _observer;
      36             : 
      37           1 :   _ObxState() {
      38           2 :     _observer = Rx();
      39             :   }
      40             : 
      41           1 :   @override
      42             :   void initState() {
      43           7 :     _observer.subject.stream.listen((data) => setState(() {}));
      44           1 :     super.initState();
      45             :   }
      46             : 
      47           1 :   @override
      48             :   void dispose() {
      49           2 :     _observer.close();
      50           1 :     super.dispose();
      51             :   }
      52             : 
      53           1 :   @override
      54             :   Widget build(BuildContext context) {
      55             :     final observer = getObs;
      56           1 :     getObs = _observer;
      57           3 :     final result = widget.builder();
      58             :     getObs = observer;
      59             :     return result;
      60             :   }
      61             : }

Generated by: LCOV version 1.14