global_flutter

197 阅读1分钟

flutter 全局配置

本地存储封装

懒汉模式封装本地存储

地址

LocalStorage.preInit() LocalStorage.getInstance()...

from 慕课网

deep link 链接打开app

pub uni-links 0.5.1

android/app/src/main/AndroidManifest.xml

<intent-filter>
              <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="dynamictheme"/>
                <data 
                      android:host="detail"
                      android:scheme="dynamictheme"/>
</intent-filter>

global.dart

/// 使用[String]链接实现

  static _initPlatformStateForStringUniLinks(context) async {

    var initialLink;

    // Platform messages may fail, so we use a try/catch PlatformException.

    try {

      initialLink = await getInitialLink();

      print('initial link: $initialLink');

      if (initialLink != null) {

        print('initialLink--$initialLink');

        //  跳转到指定页面

        schemeJump(context, initialLink);

      }

    } on PlatformException {

      initialLink = 'Failed to get initial link.';

    } on FormatException {

      initialLink = 'Failed to parse the initial link as Uri.';

    }

    // Attach a listener to the links stream

    // ignore: deprecated_member_use

    linkStream.listen((String? link) {

      // ignore: unnecessary_null_comparison

      print('listen--link -- $link');

      if (link == null) return;

      print('link--$link');

      //  跳转到指定页面

      schemeJump(context, link);

    }, onError: (Object err) {

      // if (!mounted) return;

    });

  }



  /// 路由跳转 context schemeUrl

  static schemeJump(BuildContext context, String schemeUrl) {

    final Uri _jumpUri = Uri.parse(schemeUrl.replaceFirst(

      'dynamictheme://',

      'http://path/',

    ));

    print(schemeUrl);

    print(_jumpUri);

    switch (_jumpUri.path) {

      default:

        navigateTo(context, Routes.scanResult,

            params: {"result": '跳转的链接$_jumpUri'});

        break;

    }

  }

deep link 部分借鉴于 # Flutter Scheme 使用(浏览器打开App,App内打开另一个App) 与pub - uni-links官网

网络变化检测

pub connectivity ^3.0.6

global.dart

// 初始化监听网络变化

  static _initNetworkListen() {

    Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {

      if (result == ConnectivityResult.none) {

        showWarnToast('网络已断开,请检查网络~');

      }

      Global.network = result;

    });

  }

使用

Widget _buildError(refresh) {

  return Global.network == ConnectivityResult.none

      ? _buildNetworkError(refresh)

      : _buildDataError(refresh);

}