| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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<StatefulWidget> createState() {
- return _InstanceState();
- }
- }
- class _InstanceState extends State<InstanceView>{
- 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;
- }
- });
- }
- }
|