pusher_flutter 0.0.5

  • README.md
  • CHANGELOG.md
  • Example
  • Installing
  • Versions
  • 83

pusher_flutter

A plugin for the Pusher service.

In active development. Not ready for production use.

Getting Started

For help on editing plugin code, view the documentation.

[0.0.1]

  • Basic support for subscribing to channels, getting events, and getting connectivity info.

[0.0.2]

  • Sample project cleanup

[0.0.3]

  • README changes

[0.0.4]

  • Simplified API for receiving messages. Introduced PusherMessage model.

[0.0.5]

  • onMessage is now a getter instead of a method call
  • Added support for receiving pusher errors
  • Added support for passing in a cluster when creating a Pusher instance.

example/lib/main.dart

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Map _latestMessage;
  PusherError _lastError;
  PusherConnectionState _connectionState;
  PusherFlutter pusher = new PusherFlutter("<your_key>");

  @override
  initState() {
    super.initState();
    pusher.onConnectivityChanged.listen((state) {
      setState(() {
        _connectionState = state;
        if (state == PusherConnectionState.connected) {
          _lastError = null;
        }
      });
    });
    pusher.onError.listen((err) => _lastError = err);
    _connectionState = PusherConnectionState.disconnected;
  }

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
          appBar: new AppBar(
            title: new Text('Pusher example app.'),
          ),
          body: new Column(
            children: <Widget>[
              new Row(
                children: <Widget>[
                  new Text('Latest message ${_latestMessage.toString()}')
                ],
                mainAxisAlignment: MainAxisAlignment.center,
              ),
              buildConnectRow(context),
              buildErrorRow(context),
            ],
          )),
    );
  }

  Widget buildErrorRow(BuildContext context) {
    if (_lastError != null) {
      return new Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          new Text("Error: ${_lastError.message}")
        ],
      );
    } else {
      return new Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          new Text("No Errors")
        ],
      );
    }
  }

  Widget buildConnectRow(BuildContext context) {
    switch (_connectionState) {
      case PusherConnectionState.connected:
        return new Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new MaterialButton(
                onPressed: disconnect, child: new Text("Disconnect"))
          ],
        );
      case PusherConnectionState.disconnected:
        return new Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new MaterialButton(onPressed: connect, child: new Text("Connect"))
          ],
        );
      case PusherConnectionState.disconnecting:
        return new Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[new Text("Disconnecting...")],
        );
      case PusherConnectionState.connecting:
        return new Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[new Text("Connecting...")],
        );
      case PusherConnectionState.reconnectingWhenNetworkBecomesReachable:
        return new Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new Text("Will reconnect when network becomes available")
          ],
        );
      case PusherConnectionState.reconnecting:
        return new Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[new Text("Reconnecting...")],
        );
    }
    return new Text("Invalid state");
  }

  void connect() {
    pusher.connect();

    pusher.subscribe("test_channel", "test_event");
    pusher.subscribe("test_channel", "test_event2");

    pusher.subscribeAll("test_channel", ["test_event3", "test_event4"]);

    pusher.onMessage.listen((pusher) {
      setState(() => _latestMessage = pusher.body);
    });
  }

  void disconnect() {
    pusher.unsubscribe("test_channel");
    pusher.unsubscribe("test_channel2");
    pusher.disconnect();
  }
}

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  pusher_flutter: "^0.0.5"

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter packages get

Alternatively, your editor might support packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:pusher_flutter/pusher_flutter.dart';
        
Version Uploaded Documentation Archive
0.0.5 Sep 16, 2017 Go to the documentation of pusher_flutter 0.0.5 Download pusher_flutter 0.0.5 archive
0.0.4 Sep 16, 2017 Go to the documentation of pusher_flutter 0.0.4 Download pusher_flutter 0.0.4 archive
0.0.3 Sep 16, 2017 Go to the documentation of pusher_flutter 0.0.3 Download pusher_flutter 0.0.3 archive
0.0.2 Sep 16, 2017 Go to the documentation of pusher_flutter 0.0.2 Download pusher_flutter 0.0.2 archive
0.0.1 Sep 15, 2017 Go to the documentation of pusher_flutter 0.0.1 Download pusher_flutter 0.0.1 archive

Analysis

We analyzed this package on Apr 23, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.0.0-dev.49.0
  • pana: 0.10.6
  • Flutter: 0.3.2

Scores

Popularity:
Describes how popular the package is relative to other packages. [more]
66 / 100
Health:
Code health derived from static analysis. [more]
99 / 100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100 / 100
Overall score:
Weighted score of the above. [more]
83
Learn more about scoring.

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Suggestions

  • The description is too short.

    Add more detail about the package, what it does and what is its target use case. Try to write at least 60 characters.

  • Package is pre-v1 release.

    While there is nothing inherently wrong with versions of 0.*.*, it usually means that the author is still experimenting with the general direction API.

  • Fix analysis and formatting issues.

    Analysis or formatting checks reported 1 hint.

    Run flutter format to format lib/pusher_flutter.dart.

Dependencies

Package Constraint Resolved Available
Direct dependencies
flutter 0.0.0
Transitive dependencies
collection 1.14.6 1.14.9
meta 1.1.2
sky_engine 0.0.99
typed_data 1.1.5
vector_math 2.0.6