navigator_util.dart 4.67 KB
import 'package:fluro/fluro.dart';
import 'package:flutter/material.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 '../app.dart';

class NavigatorUtil {
  static Future _navigateTo(BuildContext context, String path,
      {bool replace = false,
      bool clearStack = false,
      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.material);
  }

  /// 登录页
  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 void goHandleOnlinePage(BuildContext context, String rid, String mid,
      {fromNotify = false, replace = false}) {
    _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 void goOnlineCheckEditPage(BuildContext context,
      {String rid, fromNotify = false, replace = false}) {
    _navigateTo(context, "${Routes.online_check_edit}?fromNotify=${fromNotify}",
        replace: replace);
  }
}