main.dart 10.8 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_downloader/flutter_downloader.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:flutter_screenutil/flutter_screenutil.dart';
import 'package:fluwx/fluwx.dart';
import 'package:one_key/pages/detail/handle_online_page.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/base_info_provider.dart';
import 'package:one_key/provider/collect_store_provider.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/my_table_manage_home_model.dart';
import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/online_check_edit_provider.dart';
import 'package:one_key/provider/other_login_provider.dart';
import 'package:one_key/provider/remark_manager_model.dart';
import 'package:one_key/provider/store_base_info_provider.dart';
import 'package:one_key/provider/table_manager_model.dart';
import 'package:one_key/provider/tools.dart';
import 'package:one_key/provider/upload_img_provider.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:provider/provider.dart';
import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart';

import 'app.dart';
import 'net/dio_util.dart';
import 'net/http_url.dart';
import 'pages/login/login_page.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';
import 'package:flutter/services.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter_localizations/flutter_localizations.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();
    FluroRouter router = FluroRouter();
    Routes.configureRoutes(router);
    App.router = router;
    // App.setupLocator();
    // LogUtil.init(isDebug: true, tag: 'ONE_KEY');
    // Provider.debugCheckInvalidValueType = null;
    // await initializeDateFormatting();
    // // _requestPermissions();
    // Utils.changeStatusColor();

    await FlutterDownloader.initialize(debug: true, ignoreSsl: true);

    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(),
          ),
          // 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(),
          ),

          ChangeNotifierProvider<MyTableManageHomeModel>(
            create: (_) => MyTableManageHomeModel(),
          ),
        ],
        child: MyApp(),
      ));
    });
    // await App.initSp();
    // await AmapLocation.instance.updatePrivacyShow(true);
    // await AmapLocation.instance.updatePrivacyAgree(true);
    // await AmapService.instance.init(
    //     iosKey: '24fe3a700e69114a4328d4e46823dcda',
    //     androidKey: '13464ddadd6a5d825e79f90e10ba72d2');

    // await AmapLocation.instance.init(
    //   iosKey: '24fe3a700e69114a4328d4e46823dcda',
    // );

    /// 如果你觉得引擎的日志太多, 可以关闭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();
    // initDio();
    // _initFluwx();
    _isFirst();
    // Utils.changeStatusColor();
    // 设置EasyRefresh的默认样式
    // EasyRefresh.defaultHeader = MaterialHeader();
    // EasyRefresh.defaultFooter = BallPulseFooter();
  }

  //初始化微信SDK
  _initFluwx() async {
    await registerWxApi(
        // appId: "wx85aa3cdd0f791e65",
        appId: "wx4d105e36a36a6139",
        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");
  }

  //初始化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();
  }

  _initAmap() async {
    await AmapLocation.instance.updatePrivacyShow(true);
    await AmapLocation.instance.updatePrivacyAgree(true);
    await AmapService.instance.init(
        iosKey: '24fe3a700e69114a4328d4e46823dcda',
        androidKey: '13464ddadd6a5d825e79f90e10ba72d2');

    await AmapLocation.instance.init(
      iosKey: '24fe3a700e69114a4328d4e46823dcda',
    );
  }

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

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

  _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");
  }

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

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return ScreenUtilInit(
        designSize: const Size(750, 1334),
        // designSize: const Size(900, 1200),//话机尺寸,不能按照屏幕尺寸,大概调整合适

        minTextAdapt: true,
        splitScreenMode: true,
        builder: (context, child) {
          return MaterialApp(
            debugShowCheckedModeBanner: false,
            title: '周到安排商家',
            navigatorKey: App.navigatorKey,
            // navigatorKey: App.getIt<NavigateService>().key,
            //国际化
            localizationsDelegates: const [
              //复制粘贴控件自带字符串等显示中文
              GlobalMaterialLocalizations.delegate,
              GlobalWidgetsLocalizations.delegate,
              GlobalCupertinoLocalizations.delegate,
            ],
            supportedLocales: const [
              //复制粘贴控件自带字符串等显示中文
              Locale('zh', 'CN'),
              Locale('en', 'US'),
            ],
            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
                    ?
                    //  ChangeNotifierProvider<TableManagerModel>(
                    //     create: (_) => TableManagerModel(),
                    //     child: ChangeNotifierProvider<StoreBaseIndoProvider>(
                    //         create: (_) => StoreBaseIndoProvider(),
                    //         child: ChangeNotifierProvider<CollectStoreProvider>(
                    //             create: (_) => CollectStoreProvider(),
                    //             child: ChangeNotifierProvider<BaseIndoProvider>(
                    //                 create: (_) => BaseIndoProvider(),
                    //                 child: HomePage(initialIndex: 1)))))
                    HomePage(initialIndex: 1)
                    : ChangeNotifierProvider<OtherLoginProvider>(
                        create: (_) => OtherLoginProvider(),
                        child: LoginPage()),
            onGenerateRoute: App.router.generator,
          );
        });
  }
}