flutter_mercure_client 0.0.1 copy "flutter_mercure_client: ^0.0.1" to clipboard
flutter_mercure_client: ^0.0.1 copied to clipboard

A Flutter plugin to receive events from a Mercure hub

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_mercure_client/flutter_mercure_client.dart';

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

class MercureExampleApp extends StatelessWidget {
  const MercureExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Mercure Flutter Example',
      home: MercureHomePage(),
    );
  }
}

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

  @override
  State<MercureHomePage> createState() => _MercureHomePageState();
}

class _MercureHomePageState extends State<MercureHomePage> {
  final List<String> _messages = [];
  bool _connected = false;

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

    FlutterMercureClient.messages.listen((message) {
      setState(() {
        _messages.insert(0, message);
      });
    });
  }

  Future<void> _startListening() async {
    const mercureUrl =
        'http://exemple.com:3000/.well-known/mercure?topic=http://test';
    const jwt = 'your_jwt';

    await FlutterMercureClient.start(mercureUrl, jwt: jwt);
    setState(() {
      _connected = true;
    });
  }

  Future<void> _stopListening() async {
    await FlutterMercureClient.stop();
    setState(() {
      _connected = false;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Mercure Flutter Example')),
      body: Column(
        children: [
          const SizedBox(height: 16),
          Center(
            child: ElevatedButton(
              onPressed: _connected ? _stopListening : _startListening,
              child: Text(_connected ? 'Stop Listening' : 'Start Listening'),
            ),
          ),
          const SizedBox(height: 16),
          const Text('Messages reçus :'),
          Expanded(
            child: ListView.builder(
              reverse: true,
              itemCount: _messages.length,
              itemBuilder: (_, index) =>
                  ListTile(title: Text(_messages[index])),
            ),
          ),
        ],
      ),
    );
  }
}
0
likes
150
points
13
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin to receive events from a Mercure hub

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_mercure_client

Packages that implement flutter_mercure_client