navigator_util.dart 7.88 KB
import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';
import 'package:one_key/models/coupon_model.dart';
import 'package:one_key/models/notebook.dart';
import 'package:one_key/models/notebook_detail.dart';
import 'package:one_key/models/table_list.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/routes.dart';
import 'package:one_key/utils/fluro_convert_utils.dart';
import 'package:one_key/utils/utils.dart';
import 'package:sqflite/sqlite_api.dart';

import '../app.dart';

class NavigatorUtil {
  static Future _navigateTo(BuildContext context, String path,
      {bool replace = false,
      bool clearStack = false,
      TransitionType transitionType = TransitionType.material,
      Duration transitionDuration = const Duration(milliseconds: 250),
      RouteTransitionsBuilder transitionBuilder}) {
    Utils.changeStatusColor(color: MyColours.color_ffffff);
    return App.router.navigateTo(context, path,
        replace: replace,
        clearStack: clearStack,
        transitionDuration: transitionDuration,
        transitionBuilder: transitionBuilder,
        transition: transitionType);
  }

  /// 登录页
  static void goLoginPage(BuildContext context) {
    _navigateTo(context, Routes.login, clearStack: true);
  }

  /// 首页
  static void goHomePage(BuildContext context, {int initialIndex = 1}) {
    _navigateTo(context, "${Routes.home}?initialIndex=$initialIndex",
        clearStack: true);
  }

  /// 订单详情
  static void goNotebookDetailPage(BuildContext context, String rid,
      {String mid = "", bool fromNotify = false, replace = false}) {
    _navigateTo(context,
        "${Routes.reserve_detail}?rid=$rid&mid=$mid&fromNotify=$fromNotify",
        replace: replace);
  }

  /// 处理在线预订
  static Future goHandleOnlinePage(BuildContext context, String rid, String mid,
      {fromNotify = false, replace = false}) {
    return _navigateTo(context,
        "${Routes.handle_online_page}?rid=$rid&mid=$mid&fromNotify=$fromNotify",
        replace: replace);
  }

  /// 选择桌位
  static Future goSelectTablePage(
      BuildContext context, String rid, int dateTime, String ddate_slot,
      {bool canChoose = false, Map object}) {
    if (object != null) {
      return _navigateTo(context,
          "${Routes.select_table}?rid=$rid&dateTime=$dateTime&ddate_slot=$ddate_slot&canChoose=$canChoose&object=${FluroConvertUtils.object2string(object)}");
    }
    // object = {'object': [], "tid": ''};
    return _navigateTo(context,
        "${Routes.select_table}?rid=$rid&dateTime=$dateTime&ddate_slot=$ddate_slot&canChoose=$canChoose");
  }

  /// 邀请函
  static void goInvicationPage(BuildContext context, String rid,
      String tableInfo, String ddate, String ddateStr, String phone,
      {bool replace = false}) {
    _navigateTo(context,
        "${Routes.invication}?rid=$rid&tableInfo=${FluroConvertUtils.fluroCnParamsEncode(tableInfo)}&ddate=$ddate&ddateStr=${FluroConvertUtils.fluroCnParamsEncode(ddateStr)}&phone=$phone",
        replace: replace);
  }

  /// 发短信
  static void goSmsPage(BuildContext context, String rid) {
    _navigateTo(context, "${Routes.sms}?rid=$rid");
  }

  /// 浏览器
  static void goWebviewPage(BuildContext context) {
    _navigateTo(context, "${Routes.webview}");
  }

  ///协议
  static Future<dynamic> goWebPage(
      BuildContext context, String title, String url) {
    return _navigateTo(
      context,
      "${Routes.web_page}?title=${Uri.encodeComponent(title)}&url=$url",
    );
  }

  /// 变更预订
  static void goNoteBookChangePage(
      BuildContext context, NotebookDetail detailEntity, String rid,
      {replace = false}) {
    if (detailEntity.type == "0") {
      //内部预订
      detailEntity.is_set_ddate = "1";
    }
    _navigateTo(context,
        "${Routes.change_detail}?detail=${FluroConvertUtils.object2string(detailEntity)}&rid=$rid",
        replace: replace);
  }

  /// 可订时段管理
  static void goBookTimeSetPage(BuildContext context) {
    _navigateTo(context, "${Routes.book_time_set}");
  }

  /// 可订时段管理
  static void goReceiveOrdersTimeSetPage(BuildContext context) {
    _navigateTo(context, "${Routes.receive_orders_time_set}");
  }

  /// 常用备注管理
  static void goRemarkManagerPage(BuildContext context) {
    _navigateTo(context, "${Routes.remark_manager}");
  }

  /// 已选菜品
  static void goHasOrderFoodPage(BuildContext context,
      {String rid, fromNotify = false, replace = false}) {
    _navigateTo(
        context, "${Routes.has_order_food}?rid=${rid}&fromNotify=${fromNotify}",
        replace: replace);
  }

  /// 提前买单编辑页面
  static Future goOnlineCheckEditPage(BuildContext context,
      {String rid, String mid, fromNotify = false, replace = false}) {
    return _navigateTo(context,
        "${Routes.online_check_edit}?fromNotify=${fromNotify}&rid=${rid}&mid=$mid",
        replace: replace);
  }

  /// 提前买单查看页面
  static void goOnlineCheckDetailPage(BuildContext context,
      {String rid, fromNotify = false, replace = false}) {
    _navigateTo(context,
        "${Routes.online_check_detail}?fromNotify=${fromNotify}&rid=${rid}",
        replace: replace);
  }

  /// 发票详情
  static void goInvoiceDetailPage(BuildContext context,
      {String rid, fromNotify = false, replace = false}) {
    _navigateTo(
        context, "${Routes.invoice_detail}?fromNotify=${fromNotify}&rid=${rid}",
        replace: replace);
  }

  ///  优惠券列表
  static void goCouponPage(BuildContext context, {replace = false}) {
    _navigateTo(context, "${Routes.coupon}", replace: replace);
  }

  ///  优惠券历史列表
  static void goCouponHistoryPage(BuildContext context, {replace = false}) {
    _navigateTo(context, "${Routes.coupon_history}", replace: replace);
  }

  ///  创建优惠券
  static Future<dynamic> goCouponEditPage(BuildContext context,
      {replace = false}) {
    return _navigateTo(context, "${Routes.coupon_edit}", replace: replace);
  }

  ///  选择优惠券
  static Future<dynamic> goCouponSelectPage(BuildContext context,
      {String rid, bool hasModify, replace = false}) {
    return _navigateTo(
        context, "${Routes.coupon_select}?rid=${rid}&hasModify=${hasModify}",
        replace: replace);
  }

  ///  优惠券详情页
  static Future<dynamic> goCouponDetailPage(
      BuildContext context, CouponSunModel couponSunModel,
      {replace = false}) {
    return _navigateTo(context,
        "${Routes.coupon_detail}?couponSunModel=${FluroConvertUtils.object2string(couponSunModel)}",
        replace: replace);
  }

  ///  个人资料页面
  static Future<dynamic> goBaseInfoPage(BuildContext context,
      {replace = false}) {
    return _navigateTo(context, "${Routes.base_info}", replace: replace);
  }

  ///  绑定手机号吗页面
  static Future<dynamic> goBindingPhonePage(BuildContext context,
      {replace = false}) {
    return _navigateTo(context, "${Routes.binding_phone}", replace: replace);
  }

  ///  是否新建店铺页面
  static Future<dynamic> goIfNeedCreateStorePage(BuildContext context,
      {replace = false}) {
    return _navigateTo(context, "${Routes.if_need_create_store}",
        replace: replace);
  }

  ///  新建店铺页面
  static Future<dynamic> goCreateStorePage(BuildContext context,
      {replace = false}) {
    return _navigateTo(context, "${Routes.create_store}", replace: replace);
  }

  ///  播放视频页
  static Future<dynamic> goPlayVideoPage(BuildContext context,
      {replace = false, String urlStr}) {
    return _navigateTo(context,
        "${Routes.play_video}?urlStr=${FluroConvertUtils.fluroCnParamsEncode(urlStr)}",
        replace: replace,
        transitionType: TransitionType.materialFullScreenDialog);
  }

  ///  地图选择页
  static Future<dynamic> goMapChoicePointPage(BuildContext context,
      {replace = false, String urlStr}) {
    return _navigateTo(context, "${Routes.map_choice_point}", replace: replace);
  }
}