Flutter UI组件库插件flan的使用
Flutter UI组件库插件flan的使用
Flan 是一个本地通知插件,用于 Flutter。它允许发送系统通知。

Flan 目前处于非常早期的开发阶段,并且是为了支持另一个项目而编写的。因此,它目前只支持 iOS 并且只允许使用日历触发器来安排通知。
示例应用主要功能正常运行。它可以让你请求权限并添加通知。请注意,iOS 不会在应用程序处于前台时显示通知。
最低支持的 iOS 版本为 15.0。
安装
flutter pub add flan
使用
Flan 暴露了以下接口:
import 'package:flan/models/notification_authorization_options.dart';
import 'package:flan/models/notification_content.dart';
abstract interface class Flan {
/// 获取当前的通知设置。
///
/// 返回一个包含当前通知设置的 Future。
Future<Map<String, dynamic>> getNotificationSettingsAsync();
/// 请求用户授权以发送指定类型的通知。
///
/// [options] 指定了应用程序想要发送的通知类型。每个选项都是一个 NotificationAuthorizationOptions 实例。选项不能重复指定。
///
/// 返回一个在请求过程完成后完成的 Future。
Future<void> requestAuthorizationAsync(
List<NotificationAuthorizationOptions> options,
);
/// 在指定的 [target] 时间安排通知。
///
/// [id] 是通知的唯一标识符。
/// [target] 指定了通知的送达时间。
/// [content] 包含通知的详细信息,如标题和正文。
/// [repeats] 表示通知是否应重复,默认为 `false`。
///
/// 返回一个在通知成功安排后完成的 Future。
Future<void> scheduleNotificationAsync(
String id,
DateTime target,
NotificationContent content, {
bool repeats = false,
});
/// 取消具有指定 [ids] 的通知。
///
/// [ids] 是一个包含要取消的通知唯一标识符的可迭代对象。
///
/// 返回一个在通知成功取消后完成的 Future。
Future<void> cancelNotificationsAsync(Iterable<String> ids);
/// 获取所有已安排的通知列表。
///
/// 返回一个包含所有已安排的通知的 Future。
Future<List<Map<String, dynamic>>> getScheduledNotificationsAsync();
}
要使用它,创建一个 FlanMethodChannel
类的实例。令牌只是一个任意的对象:
Object token = Object();
Flan flan = FlanMethodChannel(token: token);
示例代码
import 'package:flan/flan.dart';
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:ksuid/ksuid.dart';
void main() {
GetIt.instance.registerSingleton<FlanApi>(FlanPlatformApi());
runApp(const FlanExampleApp());
}
class FlanExampleApp extends StatefulWidget {
const FlanExampleApp({super.key});
[@override](/user/override)
State<FlanExampleApp> createState() => _FlanExampleAppState();
}
class _FlanExampleAppState extends State<FlanExampleApp> {
static final FlanApi _flan = GetIt.instance<FlanApi>();
bool? authorized;
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Flan 示例应用'),
),
body: Center(
child: Column(
spacing: 8,
children: [
Text('授权状态: ${authorized ?? '未知'}'),
OutlinedButton(
child: const Text('请求通知授权'),
onPressed: () async {
var result = await _flan.requestAuthorizationAsync(
[
NotificationAuthorizationOptions.alert,
],
);
setState(() => authorized = result);
},
),
OutlinedButton(
child: const Text('安排 10 秒后的通知'),
onPressed: () async {
DateTime target = DateTime.now().add(Duration(seconds: 10));
NotificationContent content = NotificationContent(
title: '来自 Flan 的示例通知',
body: '来自 Flan 的问候!',
);
await _flan.scheduleNotificationAsync(
KSUID.generate().asString,
target,
content,
repeats: false,
);
},
),
OutlinedButton(
child: const Text('打印通知设置'),
onPressed: () async =>
_flan.getNotificationSettingsAsync().then(print),
)
],
),
),
),
);
}
}
更多关于Flutter UI组件库插件flan的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter UI组件库插件flan的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用Flutter UI组件库插件 flan
的示例代码。flan
是一套基于 Flutter 的高质量 UI 组件库,它提供了一系列常用的 UI 组件,可以极大地提高开发效率。
首先,你需要在你的 Flutter 项目中添加 flan
依赖。打开你的 pubspec.yaml
文件,并在 dependencies
部分添加 flan
:
dependencies:
flutter:
sdk: flutter
flan: ^最新版本号 # 请替换为最新的版本号
然后,运行 flutter pub get
来获取依赖。
接下来,你可以在你的 Flutter 应用中使用 flan
提供的组件。以下是一个简单的示例,展示了如何使用 flan
的按钮组件:
import 'package:flutter/material.dart';
import 'package:flan/flan.dart'; // 导入 flan 组件库
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flan UI 组件库示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 使用 flan 的按钮组件
FlanButton(
type: FlanButtonType.primary, // 设置按钮类型为主要按钮
text: '主要按钮',
onPressed: () {
// 按钮点击事件
FlanToast.show({
'text': '你点击了主要按钮',
'position': 'middle',
});
},
),
SizedBox(height: 20),
FlanButton(
type: FlanButtonType.warn, // 设置按钮类型为警告按钮
text: '警告按钮',
onPressed: () {
// 按钮点击事件
FlanToast.show({
'text': '你点击了警告按钮',
'position': 'middle',
});
},
),
],
),
),
);
}
}
在这个示例中,我们展示了如何使用 flan
的 FlanButton
组件,并为其设置了点击事件。当按钮被点击时,会显示一个 FlanToast
提示。
注意:FlanToast
是 flan
库中提供的另一个组件,用于显示简单的提示信息。在使用 FlanToast
之前,请确保你已经按照 flan
库的文档正确导入了所需的组件。
由于 flan
库可能会持续更新,并且具体的组件使用方式可能会有所变化,因此建议查阅 flan
的官方文档以获取最新的使用指南和组件示例。