live_activities 1.4.0 copy "live_activities: ^1.4.0" to clipboard
live_activities: ^1.4.0 copied to clipboard

outdated

A Flutter plugin to use iOS 16.1+ Live Activities & iPhone 14 Pro Dynamic Island features

example/lib/main.dart

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:live_activities/live_activities.dart';
import 'package:live_activities/models/live_activity_image.dart';
import 'package:live_activities/models/url_scheme_data.dart';
import 'package:live_activities_example/models/football_game_live_activity_model.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Home(),
    );
  }
}

class Home extends StatefulWidget {
  const Home({super.key});

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {
  final _liveActivitiesPlugin = LiveActivities();
  String? _latestActivityId;
  StreamSubscription<UrlSchemeData>? urlSchemeSubscription;

  @override
  void initState() {
    super.initState();

    _liveActivitiesPlugin.init(
      appGroupId: 'group.dimitridessus.liveactivities',
    );

    urlSchemeSubscription =
        _liveActivitiesPlugin.urlSchemeStream().listen((schemeData) {
      setState(() {
        print(schemeData.host);
        print(schemeData.path);
        print(schemeData.queryParameters);
        print(schemeData.url);
        print(schemeData.scheme);
      });
    });
  }

  @override
  void dispose() {
    urlSchemeSubscription?.cancel();
    _liveActivitiesPlugin.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Live Activities example'),
      ),
      body: SizedBox.expand(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () async {
                  final activityModel = FootballGameLiveActivityModel(
                    matchName: 'World cup ⚽️',
                    teamAName: 'PSG',
                    teamAState: 'Home',
                    teamALogo:
                        LiveActivityImageFromAsset('assets/images/psg.png'),
                    teamBLogo:
                        LiveActivityImageFromAsset('assets/images/chelsea.png'),
                    teamBName: 'Chelsea',
                    teamBState: 'External',
                    matchStartDate: DateTime.now(),
                    matchEndDate: DateTime.now().add(
                      const Duration(
                        minutes: 6,
                        seconds: 30,
                      ),
                    ),
                  );

                  _latestActivityId = await _liveActivitiesPlugin
                      .createActivity(activityModel.toMap());
                  setState(() {});
                },
                child: const Text('Create activity'),
              ),
              ElevatedButton(
                onPressed: () {
                  _liveActivitiesPlugin.dispose(force: true);
                  _latestActivityId = null;
                  setState(() {});
                },
                child: const Text(
                  'End all activities',
                  textAlign: TextAlign.center,
                ),
              ),
              if (_latestActivityId != null)
                ElevatedButton(
                  onPressed: () {
                    final activityModel = FootballGameLiveActivityModel(
                      teamAScore: 3,
                      teamBScore: 1,
                    );

                    _liveActivitiesPlugin.updateActivity(
                      _latestActivityId!,
                      activityModel.toMap(),
                    );
                  },
                  child: Text(
                    'Update activity $_latestActivityId',
                    textAlign: TextAlign.center,
                  ),
                ),
            ],
          ),
        ),
      ),
    );
  }
}
477
likes
0
points
9.71k
downloads

Publisher

verified publisherdimitridessus.fr

Weekly Downloads

A Flutter plugin to use iOS 16.1+ Live Activities & iPhone 14 Pro Dynamic Island features

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

app_group_directory, flutter, flutter_image_compress, flutter_native_image, path_provider, plugin_platform_interface

More

Packages that depend on live_activities