mdns 0.0.1

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

mDNS for Flutter

A Flutter plugin for mDNS/DNS-SD discovery and advertising. Ultimately this plugin will be compatible with Android and iOS.

See https://en.wikipedia.org/wiki/Multicast_DNS for additional info

Example

See example/lib/main.dart for a simple example

Currently Working

  • Service Discovery on Android

TODO (in this order)

  • Service Discovery on iOS
  • Service advertising on Android
  • Service advertising on iOS

[0.0.1] - Monday, January 22nd, 2018

Added in this release:

  • Discovery for Android
  • Example flutter app with basic discovery function

example/lib/main.dart

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

void main() => runApp(new MyApp());

const String discovery_service = "_workstation._tcp";

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

class _MyAppState extends State<MyApp> {
  List<String> messageLog = <String>[];
  DiscoveryCallbacks discoveryCallbacks;
  @override
  initState() {
    super.initState();

    discoveryCallbacks = new DiscoveryCallbacks(
      onDiscovered: (ServiceInfo info){
        print("Discovered ${info.toString()}");
        setState((){
          messageLog.insert(0, "DISCOVERY: Discovered ${info.toString()}");
        });
      },
      onDiscoveryStarted: (){
        print("Discovery started");
        setState((){messageLog.insert(0, "DISCOVERY: Discovery Running");});
      },
      onDiscoveryStopped: (){
        print("Discovery stopped");
        setState((){messageLog.insert(0, "DISCOVERY: Discovery Not Running");});
      },
      onResolved: (ServiceInfo info){
        print("Resolved Service ${info.toString()}");
        setState((){
          messageLog.insert(0, "DISCOVERY: Resolved ${info.toString()}");
        });
      },
    );


    messageLog.add("Starting mDNS for service [$discovery_service]");
    startMdnsDiscovery(discovery_service);
  }

  startMdnsDiscovery(String serviceType){
    Mdns mdns = new Mdns(discoveryCallbacks: discoveryCallbacks);
    mdns.startDiscovery(serviceType);
  }

  @override
  Widget build(BuildContext context) {

    return new MaterialApp(
      home: new Scaffold(
        body: new ListView.builder(
          reverse: true,
          itemCount: messageLog.length,
          itemBuilder: (BuildContext context, int index) {
            return new Text(messageLog[index]);
          },
        )
      ),
    );
  }
}

1. Depend on it

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


dependencies:
  mdns: "^0.0.1"

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:mdns/mdns.dart';
        
Version Uploaded Documentation Archive
0.0.1 Jan 22, 2018 Go to the documentation of mdns 0.0.1 Download mdns 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]
63 / 100
Health:
Code health derived from static analysis. [more]
39 / 100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
98 / 100
Overall score:
Weighted score of the above. [more]
63
Learn more about scoring.

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Suggestions

  • Fix analysis and formatting issues.

    Analysis or formatting checks reported 3 errors 1 hint.

    Strong-mode analysis of lib/mdns.dart failed with the following error:

    line: 89 col: 63
    The argument type '(Map<dynamic, dynamic>) → Null' can't be assigned to the parameter type '(dynamic) → void'.

  • 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.

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