35 lines
1.1 KiB
Dart
35 lines
1.1 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:convert/convert.dart';
|
|
import 'package:crypto/crypto.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
/// @desc 弹窗 widget 统一创建类
|
|
/// @time 2019-11-06 09:42
|
|
/// @author Cheney
|
|
class DialogUtil {
|
|
///对话框提示显示
|
|
///[id] 同一对话框唯一标识
|
|
static Widget createTipWidget(BuildContext context, Widget dialog, String message,
|
|
{String? id, bool hasTips = true, bool canceled = true, String? cancelText, String? confirmText, final Function? onTap
|
|
/* OnCancelListener onCancelListener,
|
|
OnConfirmListener onConfirmListener,*/
|
|
}) {
|
|
return WillPopScope(key: ValueKey(id ?? generateId("createTipWidget$message")), child: dialog, onWillPop: () async => canceled);
|
|
}
|
|
|
|
///生成对话框 id
|
|
static String generateId(String txt) {
|
|
assert(txt != null);
|
|
return generateMd5(txt);
|
|
}
|
|
|
|
/// md5 加密
|
|
static String generateMd5(String data) {
|
|
var content = Utf8Encoder().convert(data);
|
|
var digest = md5.convert(content);
|
|
// 这里其实就是 digest.toString()
|
|
return hex.encode(digest.bytes);
|
|
}
|
|
}
|