Line data Source code
1 : import 'dart:async'; 2 : import 'package:flutter/widgets.dart'; 3 : import 'package:get/src/rx/rx_interface.dart'; 4 : import '../get_main.dart'; 5 : import 'rx_impl.dart'; 6 : 7 2 : Widget obx(Widget Function() builder) { 8 : final b = builder; 9 2 : return Obx(b); 10 : } 11 : 12 : class Obx extends StatefulWidget { 13 : final Widget Function() builder; 14 : 15 2 : const Obx( 16 : this.builder, 17 : ); 18 4 : _ObxState createState() => _ObxState(); 19 : } 20 : 21 : class _ObxState extends State<Obx> { 22 : RxInterface _observer; 23 : StreamSubscription _listenSubscription; 24 : bool isCreator = false; 25 : 26 2 : _ObxState() { 27 4 : _observer = ListX(); 28 : } 29 : 30 2 : @override 31 : void initState() { 32 12 : _listenSubscription = _observer.subject.stream.listen((data) { 33 4 : setState(() {}); 34 : }); 35 2 : super.initState(); 36 : } 37 : 38 2 : @override 39 : void dispose() { 40 4 : _observer.close(); 41 4 : _listenSubscription?.cancel(); 42 2 : super.dispose(); 43 : } 44 : 45 2 : @override 46 : Widget build(BuildContext context) { 47 2 : final observer = Get.obs; 48 4 : Get.obs = this._observer; 49 6 : final result = widget.builder(); 50 2 : Get.obs = observer; 51 : return result; 52 : } 53 : }