/*
 * @author lsy
 * @date   2019-10-18
 **/

import 'package:flutter/material.dart';
import 'package:flutter_common/commonModel/view/iOSLoading.dart';

import 'base/DialogRouter.dart';

Future popLoadingDialogText(BuildContext context, bool canceledOnTouchOutside,
    String text, ChangeNotifier dismiss) {
  return Navigator.push(context,
      DialogRouter(LoadingDialog(canceledOnTouchOutside, text, dismiss)));
}

class LoadingDialog extends StatefulWidget {
  LoadingDialog(this.canceledOnTouchOutside, this.text, this.dismiss) : super();

  ///点击背景是否能够退出
  final bool canceledOnTouchOutside;
  final String text;
  final ChangeNotifier dismiss;

  @override
  State<StatefulWidget> createState() => LoadingDialogState();
}

class LoadingDialogState extends State<LoadingDialog> {
  @override
  void initState() {
    super.initState();
    widget.dismiss.addListener(() {
      if (widget.dismiss != null) {
        Navigator.pop(context);
        widget.dismiss.dispose();
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: new Material(

          ///背景透明
          color: Colors.transparent,

          ///保证控件居中效果
          child: Stack(
            children: <Widget>[
              GestureDetector(
                ///点击事件
                onTap: () {
                  if (widget.canceledOnTouchOutside) {
                    Navigator.pop(context);
                  }
                },
              ),
              _dialog()
            ],
          )),
    );
  }

  Widget _dialog() {
    return new Center(
      ///弹框大小
      child: new Container(
        width: 120.0,
        height: 120.0,
        child: new Container(
          ///弹框背景和圆角
          decoration: ShapeDecoration(
            color: Colors.black,
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.all(
                Radius.circular(8.0),
              ),
            ),
          ),
          child: new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              new MyCupertinoActivityIndicator(
                backColor: Colors.white,
              ),
              new Padding(
                padding: const EdgeInsets.only(
                  top: 20.0,
                ),
                child: new Text(
                  widget.text,
                  style: new TextStyle(fontSize: 16.0, color: Colors.white),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}