//各种封装的小函数 import 'dart:async'; import 'package:bruno/bruno.dart'; import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handler.dart'; void toast(String msg, BuildContext context){ BrnToast.show(msg, context); } String formattedTime(int timestamp){ // 使用DateTime.fromMillisecondsSinceEpoch来创建DateTime对象 DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(timestamp, isUtc: false); // 手动格式化日期和时间 String formattedDateTime = '${dateTime.year}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')} ${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}:${dateTime.second.toString().padLeft(2, '0')}'; return formattedDateTime; } Future handlePermission(BuildContext context, String content, List permissions) async { var status = await permissions[0].status; final Completer completer = Completer(); if (status.isDenied) { // 无权限的话就显示设置页面 showDialog( context: context, builder: (BuildContext context) { // 返回一个 AlertDialog 组件 return AlertDialog( title: Text("提示"), content: Text(content), actions: [ // 通常是按钮 TextButton( child: Text("确认"), onPressed: () async { Map statuses = await permissions.request(); Navigator.of(context).pop(); completer.complete(true); }, ), // 通常是按钮 TextButton( child: Text("取消"), onPressed: () { Navigator.of(context).pop(); completer.complete(false); }, ), ], ); }); } else { completer.complete(true); } return completer.future; }