import 'dart:async';

import 'package:flutter/material.dart';
import 'package:zhiying_base_widget/dialog/loading/loading.dart';
import 'package:zhiying_comm/zhiying_comm.dart';

class RestartWidget extends StatefulWidget {
  RestartWidget({this.child});

  final Widget child;

  static void restartApp(BuildContext context) {
    //查找顶层_RestartWidgetState并重启
    context.findAncestorStateOfType<_RestartWidgetState>().restartApp();
  }

  @override
  _RestartWidgetState createState() => _RestartWidgetState();
}

class _RestartWidgetState extends State<RestartWidget> {
  bool reStart = false;

  int com = 0;
  Timer timer1;
  Timer timer2;

  StreamController streamController=StreamController();

  Stream outData;

  bool isFirst=true;

  void restartApp() async {

    if (reStart) {
      return;
    }

    com++;

    ///刷新3次后不再刷新
    if (com > 3) {
      if (com < 7) {
        Fluttertoast.showToast(msg: "网络服务不可用");
      }
      return;
    }

    Loading.show(context, msg: "更新数据中...");

    streamController.add(null);

    timer1 = Timer(Duration(milliseconds: 1000), () async {
      print("重启");
      streamController.add("restart");
    });
    timer2 = Timer(Duration(milliseconds: 1500), () {
      Loading.dismiss();
    });
  }

  @override
  void initState() {
    outData=streamController.stream;
    super.initState();
  }

  @override
  Widget build(BuildContext context) {

    return StreamBuilder(stream: outData,builder: (context,asyn){
      if(asyn.data==null&&!isFirst){
        return Scaffold(
          body: Container(),
        );
      }else{
        isFirst=false;
       return widget?.child;
      }
    });

  }

  @override
  void dispose() {
    timer1?.cancel();
    timer2?.cancel();
    super.dispose();
  }
}
