uni_links 项目教程
1. 项目的目录结构及介绍
uni_links/
├── example/
│ ├── android/
│ ├── ios/
│ ├── lib/
│ │ └── main.dart
│ ├── pubspec.yaml
│ └── README.md
├── lib/
│ ├── uni_links.dart
│ └── uni_links_io.dart
├── pubspec.yaml
└── README.md
example/
: 包含一个示例项目,展示了如何使用uni_links
插件。android/
: 示例项目的 Android 配置文件。ios/
: 示例项目的 iOS 配置文件。lib/
: 示例项目的主要代码文件。pubspec.yaml
: 示例项目的依赖配置文件。README.md
: 示例项目的说明文档。
lib/
: 包含uni_links
插件的核心代码。uni_links.dart
: 插件的主文件。uni_links_io.dart
: 平台特定的实现文件。
pubspec.yaml
: 插件的依赖配置文件。README.md
: 插件的说明文档。
2. 项目的启动文件介绍
在 example/lib/
目录下,main.dart
是示例项目的启动文件。该文件包含了项目的入口点,并展示了如何使用 uni_links
插件来处理深度链接。
// ignore_for_file: avoid_print
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:uni_links/uni_links.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
StreamSubscription _sub;
@override
void initState() {
super.initState();
_initUniLinks();
}
void _initUniLinks() async {
// 处理初始链接
try {
String initialLink = await getInitialLink();
print('Initial link: $initialLink');
} catch (e) {
print('Error: $e');
}
// 处理链接流
_sub = linkStream.listen((String link) {
print('Link received: $link');
}, onError: (err) {
print('Error: $err');
});
}
@override
void dispose() {
super.dispose();
_sub.cancel();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Uni Links Example'),
),
body: Center(
child: Text('Check the console for link logs.'),
),
);
}
}
3. 项目的配置文件介绍
pubspec.yaml
在 example/
和根目录下都有一个 pubspec.yaml
文件,分别用于示例项目和插件本身的依赖管理。
示例项目的 pubspec.yaml
:
name: uni_links_example
description: A new Flutter project.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
uni_links: ^0.5.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.0
flutter:
uses-material-design: true
插件的 pubspec.yaml
:
name: uni_links
description: A Flutter plugin project to help with App/Deep Links (Android) and Universal Links