Flutter动态链接处理插件easy_dynamic_link的使用
Flutter 动态链接处理插件 easy_dynamic_link 的使用
😀 关于 Easy Dynamic Link
这是一个使 Firebase 中的动态链接易于使用的项目。该项目包含以下功能:
- 动态链接处理器
- 简化动态链接生成
使用说明:
要使用此项目,必须默认在应用中设置 Firebase。
To use the project, you must set firebase on the app by default.
#### 使用方法
```dart
final EasyDL _easyDL = EasyDL();
_easyDL.init();
// 简化动态链接生成
_easyDL.makeDynamicLink(
path,
webPage,
basicDeepLink,
androidPackageName,
iosBundleId,
androidFallBackUrl,
iosFallBackUrl,
appStoreId);
// 动态链接处理器
_easyDL.handler((uri, data){});
示例代码
以下是 example/lib/main.dart
的示例代码:
import 'package:easy_dynamic_link/easy_dynamic_link.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
void initState() {
_easyDL.initFbd(); // 初始化 Firebase
super.initState();
_easyDL.handler(_listenFunction); // 设置监听函数
}
late Uri? uri;
late List? data;
void _listenFunction(Uri uri, List<dynamic> data) {
print('Uri : $uri from Dynamic Link Data');
print('Data : $data from Dynamic Link Data');
setState(() {
uri = uri;
data = data;
});
}
final EasyDL _easyDL = EasyDL();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'$uri', // 显示获取到的 URI
style: Theme.of(context).textTheme.headlineMedium,
),
Text(
'$data', // 显示获取到的数据
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
);
}
}
更多关于Flutter动态链接处理插件easy_dynamic_link的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter动态链接处理插件easy_dynamic_link的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用easy_dynamic_link
插件来处理动态链接的一个示例。这个示例将展示如何集成插件、接收动态链接以及处理这些链接。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加easy_dynamic_link
依赖:
dependencies:
flutter:
sdk: flutter
easy_dynamic_link: ^latest_version # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android项目
在Android项目的AndroidManifest.xml
中,确保你已经添加了Firebase Dynamic Links所需的intent-filter:
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="https"
android:host="yourapp.page.link" /> <!-- 替换为你的Dynamic Link域名 -->
</intent-filter>
</activity>
3. 配置iOS项目
在iOS项目中,你需要在Info.plist
中添加一个URL Scheme,并在AppDelegate.swift
(或AppDelegate.m
)中处理动态链接。不过,easy_dynamic_link
插件通常会自动处理大部分iOS配置,你可能只需要确保你的Firebase项目配置正确。
4. 初始化并处理动态链接
在你的Flutter应用中,初始化easy_dynamic_link
并处理接收到的动态链接:
import 'package:flutter/material.dart';
import 'package:easy_dynamic_link/easy_dynamic_link.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String? _dynamicLink;
@override
void initState() {
super.initState();
_initializeDynamicLinks();
}
Future<void> _initializeDynamicLinks() async {
// 初始化EasyDynamicLink
EasyDynamicLink.instance.init(
androidParameters: AndroidParameters(
apiKey: 'YOUR_ANDROID_API_KEY', // 替换为你的Firebase项目中的API Key
),
iosParameters: IOSParameters(
apiKey: 'YOUR_IOS_API_KEY', // 替换为你的Firebase项目中的API Key(iOS通常不需要这个)
appID: 'YOUR_IOS_APP_ID', // 替换为你的iOS应用的Bundle ID
),
);
// 监听动态链接
EasyDynamicLink.instance.onLinkReceived.listen((link) {
setState(() {
_dynamicLink = link;
});
print('Received dynamic link: $_dynamicLink');
});
// 获取初始链接(从冷启动或点击链接启动应用时获取)
final initialLink = await EasyDynamicLink.instance.getInitialLink();
if (initialLink != null) {
setState(() {
_dynamicLink = initialLink;
});
print('Initial dynamic link: $_dynamicLink');
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Dynamic Link Demo'),
),
body: Center(
child: _dynamicLink == null
? Text('No dynamic link received yet.')
: Text('Received dynamic link: $_dynamicLink'),
),
),
);
}
}
5. 运行应用
现在你可以运行你的Flutter应用,并通过Firebase Dynamic Links生成一个链接,然后在设备上点击该链接。你应该能够在应用中看到接收到的动态链接。
这个示例展示了如何集成easy_dynamic_link
插件,并处理从Firebase Dynamic Links接收到的链接。请注意,你需要根据你的Firebase项目配置替换相应的API Key和域名。