46 lines
1.1 KiB
Dart
46 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);
|
|
}
|
|
}
|