Ryko
Ryko

Reputation: 171

Can't use the dart_ping package

I am new to flutter and dart. I am trying to use dart_ping package. My code is:

import 'package:dart_ping/dart_ping.dart';

void main() {
  print("Ping1--> ${pingFn()}");
}

pingFn() {
  int pingNumber = 0;
  final ping = Ping('1.1.1.1', count: 1);

  ping.stream.listen((event) {
    // print(event);
    String evento = event.toString();
    if (evento.contains("time")) {
      pingNumber = 1;
      print("Ping2--> $pingNumber");
    }
  });
  return pingNumber;
}

Now I am getting output as:

Ping1--> 0
Ping2--> 1

In python I would get Ping1--> 1. How can I get Ping1--> 1 in dart. I know, it has something to do with Future, async, await and I have already tried that. But I can't figure it out.

Upvotes: 0

Views: 703

Answers (2)

Ryko
Ryko

Reputation: 171

After a long try I've come up with a workaround. I have used Future,async and await feature of dart.

import 'package:dart_ping/dart_ping.dart';

main() async {
  int pingFn3 = 0;

  var pingFn2 = await pingFn();
  if (pingFn2.toString().contains("time")) {
    pingFn3 = 1;
  }

  print("Ping1--> $pingFn3");
}

Future<PingData> pingFn() async {
  // final ping = Ping('1.1.1.1', count: 3);
  final ping = Ping('127.0.0.1', count: 1);
  return await ping.stream.first;
}

Upvotes: 1

Reza M
Reza M

Reputation: 573

You can use an StreamBuilder

return Scaffold(
      body: SafeArea(
        child: Center(
          child: StreamBuilder(
            stream: Ping('google.com', count: 5).stream,
            builder: (context, snapshot) {

              if(snapshot.hasError)
                return Text('${snapshot.error}');

              if(snapshot.connectionState ==ConnectionState.done && snapshot.hasData)
                return Text('${(snapshot.data as PingData)}');

              return Text('waiting');
            }
          ),
        ),
      ),
    );

Upvotes: 1

Related Questions