import 'package:trackoffical_app/service/game/game_instance.dart'; import 'package:flutter/material.dart'; export 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'in_game_loading2.dart'; class InstanceView extends StatefulWidget{ const InstanceView({ super.key, this.closingView, required this.instance, required this.child}); final GameInstance instance; final Widget child; final Widget? closingView; @override State createState() { return _InstanceState(); } } class _InstanceState extends State{ final state = GameInstanceState.uninitialized.obs; @override void initState() { state.value=widget.instance.state; state.bindStream(widget.instance.stateStream); super.initState(); } @override void dispose() { state.close(); super.dispose(); } @override Widget build(BuildContext context) { final instance = widget.instance; return Obx((){ switch(state.value){ case GameInstanceState.uninitialized: return InGameLoadingView(instance: instance); case GameInstanceState.initialized: return widget.child; case GameInstanceState.closing: case GameInstanceState.closed: return widget.closingView??widget.child; } }); } }