utils.dart 4.49 KB
import 'dart:io';

import 'package:connectivity/connectivity.dart';
import 'package:device_info/device_info.dart';
import 'package:extended_image/extended_image.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_statusbarcolor/flutter_statusbarcolor.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:flutter/services.dart';
import 'package:fluwx/fluwx.dart';
import 'package:one_key/utils/log_util.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:package_info/package_info.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:webview_flutter/webview_flutter.dart';

class Utils {
  static void showToast(String msg) {
    Fluttertoast.showToast(msg: msg, gravity: ToastGravity.CENTER);
  }

  //显示网络图片
  static Widget showNetImage(String url,
      {double width, double height, BoxFit fit}) {
    return Image(
      image: ExtendedNetworkImageProvider(url, cache: true),
      width: width,
      height: height,
      fit: fit,
    );
  }

  //给数字前面加0
  static String addZeroNumber(int num) {
    return num < 10 ? "0" + num.toString() : num.toString();
  }

  //转换日期数字
  static String formatWeekDayNum(int num) {
    switch (num) {
      case 1:
        return "一";
      case 2:
        return "二";
      case 3:
        return "三";
      case 4:
        return "四";
      case 5:
        return "五";
      case 6:
        return "六";
      case 7:
        return "日";
      default:
        return "";
    }
  }

  // 改变状态栏背景颜色,默认改变为透明
  static changeStatusColor({Color color: Colors.white}) async {
    try {
      await FlutterStatusbarcolor.setStatusBarColor(color, animate: true);
      if (useWhiteForeground(color)) {
        FlutterStatusbarcolor.setStatusBarWhiteForeground(true);
      } else {
        FlutterStatusbarcolor.setStatusBarWhiteForeground(false);
      }
    } on PlatformException catch (e) {
      debugPrint(e.toString());
    }
  }

  //跳转拨打电话页面
  static goPhone(String phoneNum) async {
    String url = "tel:$phoneNum";
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      LogUtil.e("Could not launch $url");
    }
  }

  //跳转拨打电话页面
  static goHelp(BuildContext context) async {
    NavigatorUtil.goWebviewPage(context);
  }

  //获取应用版本昊
  static Future<String> getCurrVersion() async {
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    String version = packageInfo.version;
    return version;
  }

  //获取当前构建版本号
  static Future<int> getCurrBuildNum() async {
    PackageInfo packageInfo=await PackageInfo.fromPlatform();
    return int.parse(packageInfo.buildNumber);
  }

  //获取唯一标识
  static Future<String> getUUID() async {
    DeviceInfoPlugin deviceInfoPlugin=DeviceInfoPlugin();
    if(Platform.isAndroid){
      AndroidDeviceInfo androidDeviceInfo=await deviceInfoPlugin.androidInfo;
      return androidDeviceInfo.androidId;
    }else{
      IosDeviceInfo iosDeviceInfo=await deviceInfoPlugin.iosInfo;
      return iosDeviceInfo.identifierForVendor;
    }
  }

  //比较两个日期是否同一天
  static isOneDay(DateTime one, DateTime two) {
    if (one.year == two.year && one.month == two.month && one.day == two.day)
      return true;
    return false;
  }

  //分享邀请函
  static goShareInvicationToWeChat(String rid) {
    String _webPageUrl = "http://colorcun.com/";
    String _thumbnail =
        "https://qn.colorcun.com/reserve/images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201911151148572.jpg";
    String _title = "用餐已为您安排,点击查看详情";
    String _userName = "gh_487873d353b3";
    String _path = "pages/customer/index?id=$rid&hasInvitation=1";
    String _description = "OneKey";
    var model = new WeChatShareMiniProgramModel(
        webPageUrl: _webPageUrl,
        userName: _userName,
        title: _title,
        path: _path,
        description: _description,
        thumbnail: WeChatImage.network(_thumbnail));
    shareToWeChat(model);
  }

  //检查网络连接
  static Future<bool> checkConnectiviy() async {
    var connectivityResult = await (new Connectivity().checkConnectivity());
    if (connectivityResult == ConnectivityResult.mobile) {
      // I am connected to a mobile network.
      return true;
    } else if (connectivityResult == ConnectivityResult.wifi) {
      // I am connected to a wifi network.
      return true;
    }
    return false;
  }
}