main.dart 6.96 KB
import 'dart:io';

import 'package:amap_map_fluttify/amap_map_fluttify.dart';
import 'package:common_utils/common_utils.dart';
import 'package:dio/dio.dart';
import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart' hide Router;
import 'package:flutter_bugly/flutter_bugly.dart';
import 'package:flutter_easyrefresh/ball_pulse_footer.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_easyrefresh/material_header.dart';

import 'package:fluwx/fluwx.dart';

import 'package:one_key/pages/home/home_page.dart';
import 'package:one_key/pages/login/first_page.dart';
import 'package:one_key/pages/login/login_page_f.dart';

import 'package:one_key/provider/coupon_provider.dart';
import 'package:one_key/provider/create_store_model.dart';
import 'package:one_key/provider/customer_making_provider.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:one_key/provider/message_model.dart';
import 'package:one_key/provider/notebook_detail_model.dart';

import 'package:one_key/provider/other_login_provider.dart';
import 'package:one_key/provider/remark_manager_model.dart';
import 'package:one_key/provider/upload_img_provider.dart';
import 'package:one_key/utils/utils.dart';
import 'package:provider/provider.dart';

import 'app.dart';
import 'net/dio_util.dart';
import 'net/http_url.dart';
import 'provider/order_food_provider.dart';
import 'provider/user_model.dart';
import 'route/navigate_service.dart';
import 'route/routes.dart';
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';

// Future<bool> _requestPermissions() async {
//   Map<Permission, PermissionStatus> permissions = await [
//     Permission.photos,
//     Permission.location,
//     Permission.camera,
//     Permission.contacts,
//     Permission.storage,
//     Permission.notification
//   ].request();

//   List<bool> results = permissions.values.toList().map((status) {
//     return status == PermissionStatus.granted;
//   }).toList();
//   print(results.toString());
// }

Future<void> main() async {
  // FlutterBugly.postCatchedException(() async {
  WidgetsFlutterBinding.ensureInitialized();
  // _requestPermissions();
  // Utils.changeStatusColor();
  // await App.initSp();
  // App.setupLocator();
  FluroRouter router = FluroRouter();
  Routes.configureRoutes(router);
  App.router = router;
  await App.initSp();

  SystemChrome.setPreferredOrientations(
      [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]).then((_) {
    runApp(MultiProvider(
      providers: [
        ChangeNotifierProvider<MessageModel>(
          create: (_) => MessageModel(),
        ),
        ChangeNotifierProvider<UserModel>(
          create: (_) => UserModel(),
        ),
        ChangeNotifierProvider<MessageDialogModel>(
          create: (_) => MessageDialogModel()..init(),
        ),
        // ChangeNotifierProvider<OnlineCheckEditProvider>(
        //   create: (_) => OnlineCheckEditProvider(),
        // ),
        ChangeNotifierProvider<OrderFoodProvider>(
          create: (_) => OrderFoodProvider(),
        ),
        ChangeNotifierProvider<NotebookDetailModel>(
          create: (_) => NotebookDetailModel(),
        ),
        ChangeNotifierProvider<CouponProvider>(
          create: (_) => CouponProvider(),
        ),
        ChangeNotifierProvider<UploadImageProvider>(
          create: (_) => UploadImageProvider(),
        ),
        ChangeNotifierProvider<CreateStoreModel>(
          create: (_) => CreateStoreModel(),
        ),
        ChangeNotifierProvider<RemarkManagerModel>(
          create: (_) => RemarkManagerModel(),
        ),
        ChangeNotifierProvider<CustomerMakingProvider>(
          create: (_) => CustomerMakingProvider(),
        ),
      ],
      child: MyApp(),
    ));
  });
  // await App.initSp();

  /// 如果你觉得引擎的日志太多, 可以关闭Fluttify引擎的日志
  // await enableFluttifyLog(false); // 关闭log
  // FlutterBugly.init(androidAppId: "f71a313f42", iOSAppId: "3089e4587e");
  // });
}

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new MyAppState();
  }
}

class MyAppState extends State<MyApp> {
  int xgCount = 1; //注册信鸽次数,最多5次
  bool isLogin = false;
  bool isFirst = true;
  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    _isFirst();
    // Utils.changeStatusColor();
  }

  //初始化微信SDK
  _initFluwx() async {
    await registerWxApi(
        appId: "wx85aa3cdd0f791e65",
        doOnAndroid: true,
        doOnIOS: true,
        universalLink: "https://xt04.colorcun.com/link/OneKey/");
    var result = await isWeChatInstalled;
    if (result != null && result) {
      App.isInstallWx = true;
    } else {
      App.isInstallWx = false;
    }
    LogUtil.v("is installed $result");
  }

  _ontherInit() async {
    initDio();
    await _initFluwx();
    LogUtil.init(isDebug: true, tag: 'ONE_KEY');
    Provider.debugCheckInvalidValueType = null;
    await initializeDateFormatting();

    // 设置EasyRefresh的默认样式
    EasyRefresh.defaultHeader = MaterialHeader();
    EasyRefresh.defaultFooter = BallPulseFooter();
    _isLogin();
    // FlutterBugly.init(androidAppId: "f71a313f42", iOSAppId: "3089e4587e");
  }

//初始化dio
  initDio() {
    DioUtil.openDebug();
    BaseOptions options = DioUtil.getDefOptions();
    options.baseUrl = HttpUrl.server_address;
    HttpConfig config = new HttpConfig(
        options: options, status: "ret", code: "ret", msg: "msg", data: "data");
    DioUtil().setConfig(config);
    _initAmap();
  }

//第一次打开应用
  _isFirst() async {
    isFirst = App.sp.getBool("isFirst") ?? true;

    if (!isFirst) {
      await _ontherInit();
    }
  }

  //判断是否登录
  _isLogin() async {
    UserModel userModel = Provider.of<UserModel>(context, listen: false);
    userModel.initUser();
    isLogin = App.sp.getBool("isLogin") ?? false;
  }

  _initAmap() async {
    await AmapService.instance.init(
        iosKey: 'e373581528f8fd901c01dfbda236159e',
        androidKey: 'dbced781d0acd36184d5b4b54da7188d');
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: '一键订',
      // navigatorKey: App.getIt<NavigateService>().key,
      theme: ThemeData(
          brightness: Brightness.light,
          primaryColor: Colors.white,
          splashColor: Colors.transparent,
          textTheme:
              TextTheme(overline: TextStyle(decoration: TextDecoration.none)),
          tooltipTheme: TooltipThemeData(verticalOffset: -100000)),
      home: isFirst
          ? FirstPage()
          : isLogin
              ? HomePage(initialIndex: 1)
              : ChangeNotifierProvider<OtherLoginProvider>(
                  create: (_) => OtherLoginProvider(), child: LoginPage()),
      onGenerateRoute: App.router.generator,
    );
  }
}