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

import 'package:common_utils/common_utils.dart';
import 'package:connectivity/connectivity.dart';
import 'package:device_info/device_info.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/provider/user_model.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:package_info/package_info.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:webview_flutter/webview_flutter.dart';

import '../app.dart';

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

  //本地图片资源路径
  static String getImgPath(String name, {String format: 'png'}) {
    return 'assets/$name.$format';
  }

  //给数字前面加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 goMiniProgramZm(BuildContext context, String subPath) {
    UserModel model = Provider.of<UserModel>(context, listen: false);
    launchWeChatMiniProgram(
        username: "gh_487873d353b3",
        path:
            "pack-book/pages/book/b_index?seller_id=${model.user.sellerid}&seller_openid=seller_openid&manager_id=&goPath=${subPath}",
        miniProgramType: WXMiniProgramType.RELEASE);
  }

  //跳转拨打电话页面
  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;
  }

  /// 获取日期  今天  明天  后天等等
  static int getDdate(List dateList) {
    //当前选中 月 日string
    String mdStr = '';
    //今天 明天 其他天
    for (var item in dateList) {
      if (item['select'] == true) {
        mdStr = item['title'];
      }
    }
    String timeNowYear = DateUtil.formatDate(DateTime.now(), format: 'yyyy');
    String ymyStr = timeNowYear + '-' + mdStr; //年月日
    String timeStr = ymyStr + ' ' + "00:00:00";
    int ddate = DateUtil.getDateMsByTimeStr(timeStr); //筛选日期时间戳
    return ddate;
  }

  /// 获取早餐、午餐、晚餐字段 1 ,2, 3
  static String getDdateSolt(List sunDateList) {
    String ddateSolt = '';
    for (var item in sunDateList) {
      if (item['isSelect']) {
        ddateSolt = '${item['ddateSolt']}';
      }
    }
    return ddateSolt;
  }

  ///  选中前面的按钮获取人数,输入的自己获取
  static String getPnum(List personNumList) {
    String pnum = '6';
    for (var item in personNumList) {
      if (item['isSelect']) {
        pnum = item['dateText'];
      }
    }
    if (pnum == '更多') {
      pnum = '6';
    }
    return pnum;
  }
}