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

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/detail/handle_online_page.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:one_key/provider/online_check_edit_provider.dart';
import 'package:one_key/provider/tools.dart';
import 'package:one_key/utils/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/user_model.dart';
import 'route/navigate_service.dart';
import 'route/routes.dart';
import 'package:flutter/services.dart';

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();
    Utils.changeStatusColor();
    SystemChrome.setPreferredOrientations(
            [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown])
        .then((_) {
      runApp(MultiProvider(
        providers: [
          ChangeNotifierProvider<UserModel>(
            create: (_) => UserModel(),
          ),
          ChangeNotifierProvider<MessageDialogModel>(
            create: (_) => MessageDialogModel()..init(),
          ),
          ChangeNotifierProvider<OnlineCheckEditProvider>(
            create: (_) => OnlineCheckEditProvider(),
          ),
        ],
        child: MyApp(),
      ));
    });

    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次

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    initDio();
    _initFluwx();
    Utils.changeStatusColor();
    // 设置EasyRefresh的默认样式
    EasyRefresh.defaultHeader = MaterialHeader();
    EasyRefresh.defaultFooter = BallPulseFooter();
  }

  //初始化微信SDK
  _initFluwx() async {
    await registerWxApi(
        appId: "wx85aa3cdd0f791e65",
        doOnAndroid: true,
        doOnIOS: true,
        universalLink: "https://xt04.colorcun.com/link/OneKey/");
    var result = await isWeChatInstalled;
    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);
  }

  @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: LoginPage(),
      onGenerateRoute: App.router.generator,
    );
  }
}