live_activities 1.3.0
live_activities: ^1.3.0 copied to clipboard
A Flutter plugin to use iOS 16.1+ Live Activities & iPhone 14 Pro Dynamic Island features

Live Activities #
A Flutter plugin to use iOS 16.1+ Live Activities & iPhone 14 Pro Dynamic Island features.
๐ง What is it ? #
This plugin use iOS ActivityKit API.
live_activities can be used to show dynamic live notification & implement dynamic island feature on the iPhone 14 Pro / Max โซ๏ธ
โ ๏ธ live_activities is only intended to use with iOS 16.1+ ! It will simply do nothing on other platform & < iOS 16.1


๐ป Getting started #
Due to some technical restriction, it's not currently possible to only use Flutter ๐ซฃ.
You need to implement in your Flutter iOS project a Widget Extension & develop in Swift/Objective-C your own Live Activity / Dynamic Island design.
โน๏ธ You can check into the example repository for a full example app using Live Activities & Dynamic Island
-
๐ฑ Native #
-
Create natively your Live Activity view tutorial, you can also create natively a Dynamic Island tutorial.
-
Enable push notification capabilities.
- Enable live activities for both your app & widget extension.
- Create App Group for both
Runner
& your widget extension.
-
-
๐ Flutter #
- Import the plugin.
import 'package:live_activities/live_activities.dart';
- Initialize the Plugin by passing the created App Group Id (created above).
final _liveActivitiesPlugin = LiveActivities(); _liveActivitiesPlugin.init(appGroupId: "YOUR_CREATED_APP_ID");
- Create your dynamic activity.
final Map<String, dynamic> activityModel = { 'name': 'Margherita', 'ingredient': 'tomato, mozzarella, basil', 'quantity': 1, }; _liveActivitiesPlugin.createActivity(activityModel.toMap());
You can pass all type of data you want but keep it mind it should be compatible with
UserDefaults
Communicate over Native ๐งต and Flutter ๐ #
In order to pass some useful data between your native live activity / dynamic island with your Flutter app you just need to setup URL scheme.
- Add a custom url scheme in Xcode by navigating to Runner > Runner > URL Types > URL Schemes

- In your Swift code, just create a new link and open to your custom URL Scheme
Link(destination: URL(string: "la://my.app/order?=123")!) { // Replace "la" with your scheme
Text("See order")
}
โ ๏ธ Don't forget to put the URL Scheme you have typed in the previous step.
- In your Flutter App, you just need to listen on the url scheme Scheme
_liveActivitiesPlugin.urlSchemeStream().listen((schemeData) {
// do what do you want here ๐ค
});
๐ Documentation #
Name | Description | Returned value |
---|---|---|
.init() |
Initialize the Plugin by providing an App Group Id (see above) | Future When the plugin is ready to create/update an activity |
.createActivity() |
Create an iOS live activity | String The activity identifier |
.updateActivity() |
Update the live activity data by using the activityId provided |
Future When the activity was updated |
.endActivity() |
End the live activity by using the activityId provided |
Future When the activity was ended |
.getAllActivitiesIds() |
Get all activities ids created | Future<List<String>> List of all activities ids |
.endAllActivities() |
End all live activities of the app | Future When all activities was ended |
.areActivitiesEnabled() |
Check if live activities feature are supported & enabled | Future<bool> Live activities supported or not |
.getActivityState() |
Get the activity current state | Future<LiveActivityState> An enum to know the status of the activity (active , dismissed or ended ) |
.urlSchemeStream() |
Subscription to handle every url scheme (ex: when the app is opened from a live activity / dynamic island button, you can pass data) | Future<UrlSchemeData> Url scheme data which handle scheme url host path queryItems |
๐ฅ Contributions #
Contributions are welcome. Contribute by creating a PR or create an issue ๐.
๐ฏ Roadmap #
- โ Inject a Widget inside the notification with Flutter Engine ?
- โ Pass media between extension & Flutter app.
- โ
Support multiple type instead of
String
(Date, Number etc.). - โ Pass data across native dynamic island and Flutter app.
- โ Pass data across native live activity notification and Flutter app.
- โ Cancel all activities.
- โ Get all activities ids.
- โ Check if live activities are supported.