Giter Site home page Giter Site logo

flutter's People

Contributors

djthorpe avatar kklem0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

flutter's Issues

[mdns_plugin]在ios上会不停的调用netServiceDidResolveAddress

我是在ipad 7 ios 13.3上使用的;
现象是:found service后,不断的有resolved service回调;
原来我以为是在不停resolve service导致的,但是发现并没有在不停的调用resolve serivce;

看了下代码,我发现是这个函数netServiceDidResolveAddress,在不停的调用,从而导致resolved service回调被不停的调用;

我参考了下官方文档:
https://developer.apple.com/documentation/foundation/nsnetservicedelegate/1408457-netservicedidresolveaddress?language=objc
https://developer.apple.com/documentation/foundation/nsnetservice/1416564-resolvewithtimeout?language=objc

文档中有个提示:
The delegate can use the addresses method to retrieve the service’s address. If the delegate needs only one address, it can stop the resolution process using stop. Otherwise, the resolution will continue until the timeout specified in resolveWithTimeout: is reached.

发现是resolveWithTimeout没有设置导致的,我把超时设置为1s,就不会不停的调用了,但是还是会调几次;正常来说,resolve之后应该stop的,是因为delegate需要多个address,然后又没有设置超时,所以就导致不停的调用了?

MDNSPlugin no iP in iOS, not working in Android

Hi, I've made a sample test and it partly work in iOS and not working on Android.

The main.dart

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(),
      floatingActionButton: FloatingActionButton(
        onPressed: mDnsDiscovery,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

void mDnsDiscovery() async {
  MDNSPlugin mdns = new MDNSPlugin(Delegate());
  await mdns.startDiscovery("_hue._tcp.", enableUpdating: false);
  sleep();
  await mdns.stopDiscovery();
  sleep();
}

Future sleep() {
  return new Future.delayed(const Duration(seconds: 5), () => "5");
}

class Delegate implements MDNSPluginDelegate {
  void onDiscoveryStarted() {
    print("\n\n\nDiscovery started");
  }

  void onDiscoveryStopped() {
    print("\n\n\nDiscovery stopped");
  }

  bool onServiceFound(MDNSService service) {
    print("Found: $service ${serviceDetail(service)}");

    return true;
  }

  void onServiceResolved(MDNSService service) {
    print("Resolved: $service ${serviceDetail(service)}");
  }

  void onServiceUpdated(MDNSService service) {
    print("Updated: $service ${serviceDetail(service)}");
  }

  void onServiceRemoved(MDNSService service) {
    print("Removed: $service ${serviceDetail(service)}");
  }

  String serviceDetail(MDNSService service) {
    return 'name [${service.name}] hostName [${service.hostName}] addresses [${service.addresses}] port [${service.port}] map [${service.map}]';
  }
}

The result in iPhone simulator (Can't detect the IP address)

Performing hot restart...
Syncing files to device iPhone 11...
Restarted application in 900ms.
flutter: 


Discovery started
flutter: Found: <MDNSService>{ name='Philips Hue - 70D5E3' serviceType='_hue._tcp.' } name [Philips Hue - 70D5E3] hostName [] addresses [[]] port [-1] map [{method: onServiceFound, address: [], port: -1, type: _hue._tcp., txt: {}, name: Philips Hue - 70D5E3, hostName: }]
flutter: 


Discovery stopped

The result in Android simulator (Can't detect anything)

Performing hot restart...
Syncing files to device Android SDK built for x86...
Restarted application in 921ms.
I/flutter (12718): 
I/flutter (12718): 
I/flutter (12718): 
I/flutter (12718): Discovery started
I/flutter (12718): 
I/flutter (12718): 
I/flutter (12718): 
I/flutter (12718): Discovery stopped

Is there anything I can do to fix those 2 issue?

Thank for the ONLY mDNS package that actually work for flutter.

java.lang.IllegalArgumentException: listener not registered :- Error in android

I tried running your example code, It works fine in the IOS and also returns the hosts but gives error in the android :

E/MethodChannel#mdns_plugin(21924): java.lang.IllegalArgumentException: listener not registered E/MethodChannel#mdns_plugin(21924): at com.android.internal.util.Preconditions.checkArgument(Preconditions.java:47) E/MethodChannel#mdns_plugin(21924): at android.net.nsd.NsdManager.getListenerKey(NsdManager.java:467) E/MethodChannel#mdns_plugin(21924): at android.net.nsd.NsdManager.stopServiceDiscovery(NsdManager.java:601) E/MethodChannel#mdns_plugin(21924): at com.mutablelogic.mdns_plugin.MDNSPlugin.startDiscovery(MDNSPlugin.kt:90) E/MethodChannel#mdns_plugin(21924): at com.mutablelogic.mdns_plugin.MDNSPlugin.onMethodCall(MDNSPlugin.kt:63) E/MethodChannel#mdns_plugin(21924): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:231) E/MethodChannel#mdns_plugin(21924): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:93) E/MethodChannel#mdns_plugin(21924): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:642) E/MethodChannel#mdns_plugin(21924): at android.os.MessageQueue.nativePollOnce(Native Method) E/MethodChannel#mdns_plugin(21924): at android.os.MessageQueue.next(MessageQueue.java:326) E/MethodChannel#mdns_plugin(21924): at android.os.Looper.loop(Looper.java:160) E/MethodChannel#mdns_plugin(21924): at android.app.ActivityThread.main(ActivityThread.java:6718) E/MethodChannel#mdns_plugin(21924): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#mdns_plugin(21924): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) E/MethodChannel#mdns_plugin(21924): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) E/flutter (21924): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, listener not registered, null) E/flutter (21924): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7) E/flutter (21924): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33) E/flutter (21924): <asynchronous suspension> E/flutter (21924): #2 MDNSPlugin.startDiscovery (package:mdns_plugin/mdns_plugin.dart:160:33) E/flutter (21924): #3 Discovery.avahi (package:homifiFlutter/operations/discovery/udpDiscovery.dart:172:16) E/flutter (21924): #4 _AsyncAwaitCompleter.start (dart:async-patch/async_patch.dart:45:6) E/flutter (21924): #5 Discovery.avahi (package:homifiFlutter/operations/discovery/udpDiscovery.dart:170:28) E/flutter (21924): #6 _SplashScreenState.load (package:homifiFlutter/screens/discovery/splash.dart:96:21) E/flutter (21924): #7 _AsyncAwaitCompleter.start (dart:async-patch/async_patch.dart:45:6) E/flutter (21924): #8 _SplashScreenState.load (package:homifiFlutter/screens/discovery/splash.dart:79:12) E/flutter (21924): #9 _SplashScreenState.initState (package:homifiFlutter/screens/discovery/splash.dart:76:5) E/flutter (21924): #10 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4355:58) E/flutter (21924): #11 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) E/flutter (21924): #12 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (21924): #13 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (21924): #14 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (21924): #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (21924): #16 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (21924): #17 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) E/flutter (21924): #18 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) E/flutter (21924): #19 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) E/flutter (21924): #20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) E/flutter (21924): #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (21924): #22 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (21924): #23 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (21924): #24 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (21924): #25 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (21924): #26 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (21924): #27 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (21924): #28 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (21924): #29 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) E/flutter (21924): #30 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) E/flutter (21924): #31 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) E/flutter (21924): #32 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11) E/flutter (21924): #33 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) E/flutter (21924): #34 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (21924): #35 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (21924): #36 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (21924): #37 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (21924): #38 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (21924): #39 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (21924): #40 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (21924): #41 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (21924): #42 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) E/flutter (21924): #43 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) E/flutter (21924): #44 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) E/flutter (21924): #45 Stat

this is the error I am getting

Add null safety for mdns_plugin

Currently mdns_plugin does not contain mdns_plugin support

image

Let's add support for it so that this package can get relevant again and get more points on pub.dev

Mdns uses a deprecated version of the Android embedding

After importing the mdns_plugin to my project and running pub get I am getting the following error

The plugin `mdns_plugin` uses a deprecated version of the Android embedding.
To avoid unexpected runtime failures, or future build failures, try to see if this plugin supports the Android V2 embedding. Otherwise, consider removing it since a future release of Flutter will remove these deprecated APIs.
If you are plugin author, take a look at the docs for migrating the plugin to the V2 embedding: https://flutter.dev/go/android-plugin-migration.

Can we update it and push a new version to pub.dev, or is it more complicated than that?.

Impossible to get mdns server IP

Hello,

Nice plugin ! But I have some problems about using it.
I have test your example, which works great, but I would like to have a simple void to print me the ip of a device (found by this plugin).

I have test the provided example is the readme, and wanted to get the device's ip :

import 'dart:async';
import 'package:mdns_plugin/mdns_plugin.dart';

void main() async {
    MDNSPlugin mdns = new MDNSPlugin(Delegate());
    await mdns.startDiscovery("_googlecast._tcp",enableUpdating: true);
    sleep();
    await mdns.stopDiscovery();
    sleep();
}

Future sleep() {
  return new Future.delayed(const Duration(seconds: 5), () => "5");
}

class Delegate implements MDNSPluginDelegate {
  void onDiscoveryStarted() {
      print("Discovery started");
  }
  void onDiscoveryStopped() {
      print("Discovery stopped");
  }
  bool onServiceFound(MDNSService service) {
      print("Found: $service");
      // Always returns true which begins service resolution
      return true;
  }
  void onServiceResolved(MDNSService service) {
      **print('service.addresses[0]),**
      print("Resolved: $service");
  }
  void onServiceUpdated(MDNSService service) {
      print("Updated: $service");
  }
  void onServiceRemoved(MDNSService service) {
      print("Removed: $service");
  }
}

This should work, because the 'print(service.address[0])' works in your example plugin.
But the plugin blocks, and never go to the "onServiceResolved". My online print is :

flutter: Discovery started flutter: Found: <MDNSService>{ name='Chromecast-3cb52b36b7aceaf82c5cfff5d26a4405' serviceType='_googlecast._tcp.' } flutter: Discovery stopped

The "print("Resolved: $service");" never show up.

Did I forget something ?

Got Error(Android)

2020-04-14 01:04:52.652 2171-2275/? D/NsdService: Resolve service
2020-04-14 01:04:52.652 2171-2275/? D/NsdService: mdnssd [resolve, 2102, _companion-link, _tcp.local., local.]
2020-04-14 01:04:52.653 1101-1311/? D/MDnsDS: resolveService(2102, (null), _companion-link, _tcp.local., local.)
2020-04-14 01:04:52.654 18495-18532/? D/MDNSPlugin: onResolveFailed: Error 0: name: _rfb, type: _tcp.local., host: null, port: 0, txtRecord: 
2020-04-14 01:04:52.655 1101-1311/? E/MDnsDS: service resolve request 2102 got an error from DNSServiceResolve -65540
2020-04-14 01:04:52.655 1101-1311/? D/MDnsDS: freeServiceRef 2102
2020-04-14 01:04:52.658 2171-2275/? E/NsdService: Failed to execute mdnssd [resolve, 2102, _companion-link, _tcp.local., local.]
    com.android.server.NativeDaemonConnector$NativeDaemonArgumentException: command '3628 mdnssd resolve 2102 _companion-link _tcp.local. local.' failed with '501 3628 resolveService got an error from DNSServiceResolve'
        at com.android.server.NativeDaemonConnector.executeForList(NativeDaemonConnector.java:512)
        at com.android.server.NativeDaemonConnector.execute(NativeDaemonConnector.java:411)
        at com.android.server.NativeDaemonConnector.execute(NativeDaemonConnector.java:406)
        at com.android.server.NsdService$DaemonConnection.execute(NsdService.java:698)
        at com.android.server.NsdService.resolveService(NsdService.java:749)
        at com.android.server.NsdService.access$2300(NsdService.java:61)
        at com.android.server.NsdService$NsdStateMachine$EnabledState.processMessage(NsdService.java:363)
        at com.android.internal.util.StateMachine$SmHandler.processMsg(StateMachine.java:992)
        at com.android.internal.util.StateMachine$SmHandler.handleMessage(StateMachine.java:809)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.os.HandlerThread.run(HandlerThread.java:65)
2020-04-14 01:04:52.658 2171-2275/? D/NsdService: Stop service discovery
2020-04-14 01:04:52.658 2171-2275/? D/NsdService: mdnssd [stop-discover, 2097]
2020-04-14 01:04:52.659 1101-1311/? D/MDnsDS: Stopping discover with ref 0x78886292d8
2020-04-14 01:04:52.659 1101-1311/? D/MDnsDS: freeServiceRef 2097
2020-04-14 01:04:52.659 1101-1311/? D/MDnsDS: triggering rescan
2020-04-14 01:04:52.659 1101-1310/? D/MDnsDS: Monitor poll got data pollCount = 2, 2
2020-04-14 01:04:52.659 1101-1310/? D/MDnsDS: Monitor found [1].revents = 32 - calling ProcessResults
2020-04-14 01:04:52.659 1101-1310/? W/netd: dnssd_clientstub DNSServiceProcessResult called with NULL DNSServiceRef
2020-04-14 01:04:52.659 1101-1310/? D/MDnsDS: controlSocket shows revent= 1
2020-04-14 01:04:52.659 1101-1310/? D/MDnsDS: MDnsSdListener::Monitor got 1
2020-04-14 01:04:52.659 1101-1310/? D/MDnsDS: MDnsSdListener::Monitor poll rescanning - size=10, live=-666
2020-04-14 01:04:52.659 1101-1310/? D/MDnsDS: Going to poll with pollCount 1
2020-04-14 01:04:52.660 18495-18532/? D/MDNSPlugin: onResolveFailed: Error 0: name: _companion-link, type: _tcp.local., host: null, port: 0, txtRecord: 
2020-04-14 01:04:52.660 2171-2275/? D/NsdService: Discover services
2020-04-14 01:04:52.660 2171-2275/? D/NsdService: mdnssd [discover, 2103, _http._tcp]
2020-04-14 01:04:52.661 1101-1311/? D/MDnsDS: discover((null), _http._tcp, (null), 2103, 0)
2020-04-14 01:04:52.661 1101-1311/? D/MDnsDS: using ref 0x7888629398
2020-04-14 01:04:52.662 1101-1311/? D/MDnsDS: startMonitoring 2103
2020-04-14 01:04:52.662 1101-1311/? D/MDnsDS: triggering rescan
2020-04-14 01:04:52.662 1101-1311/? D/MDnsDS: discover successful
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: Monitor poll got data pollCount = 1, 1
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: controlSocket shows revent= 1
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: MDnsSdListener::Monitor got 1
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: MDnsSdListener::Monitor poll rescanning - size=10, live=-665
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: Going to poll with pollCount 2
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: Monitor poll got data pollCount = 2, 1
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: Monitor found [1].revents = 1 - calling ProcessResults
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: Discover found new serviceName Firefly on xy-c1, regType _http._tcp. and domain local. for 2103
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: controlSocket shows revent= 0
2020-04-14 01:04:52.662 1101-1310/? D/MDnsDS: Going to poll with pollCount 2
2020-04-14 01:04:52.663 18495-18512/? I/flutter: Discovery stopped
2020-04-14 01:04:52.664 2171-2275/? D/NsdService: Discover 385 2103_http._tcp
2020-04-14 01:04:52.665 2171-2275/? D/NsdService: Stop service discovery
2020-04-14 01:04:52.665 2171-2275/? D/NsdService: mdnssd [stop-discover, 2103]
2020-04-14 01:04:52.665 1101-1311/? D/MDnsDS: Stopping discover with ref 0x7888629398
2020-04-14 01:04:52.665 1101-1311/? D/MDnsDS: freeServiceRef 2103

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.