Reputation: 171
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
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
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