showMessage static method

dynamic showMessage(
  1. String? message, {
  2. int duration = 1,
  3. bool needCancelOld = false,
  4. String? key,
  5. ToastGravity gravity = ToastGravity.CENTER,
  6. bool needForceShow = false,
})

需在游戏中展示/调用toast请使用 forceShowMessage 方法

Implementation

static showMessage(
  String? message, {
  int duration = 1,
  bool needCancelOld = false, // 是否要取消旧的,避免视图一直叠加
  String? key, // 用来判断这个toast是否正在展示
  ToastGravity gravity = ToastGravity.CENTER, // toast展示位置,默认屏幕中间
  bool needForceShow = false, //是否要在游戏中展示
}) {
  if (message == null || message.isEmpty) {
    return;
  }
  if (needForceShow == false) {
    if (OverlayInit.shouldGiveupToastCheck != null) {
      bool shouldGiveup = OverlayInit.shouldGiveupToastCheck!();
      if (shouldGiveup == true) {
        return;
      }
    }
  }
  if (needCancelOld == true) {
    Fluttertoast.cancel();
  }
  _lock.synchronized(() {
    // 1.这个文案是否正在展示
    if (key != null) {
      if (_messages.contains(key)) {
        return;
      }
    } else {
      if (_messages.contains(message)) {
        return;
      }
    }
    // 2.记录正在展示
    if (key != null) {
      _messages.add(key);
    } else {
      _messages.add(message);
    }
    // 3.在指定时间过后移出列表
    Future.delayed(Duration(milliseconds: (_interval * 1000).toInt()), () {
      if (key != null) {
        _messages.remove(key);
      } else {
        _messages.remove(message);
      }
    });

    Fluttertoast.showToast(
      msg: message,
      toastLength: Toast.LENGTH_SHORT,
      gravity: gravity,
      timeInSecForIosWeb: duration,
      backgroundColor: Color(0xFF333333),
      textColor: Colors.white,
      fontSize: 13.0.w_pt_cj,
    );
  });
}