как периодический делать http запросы правильно?
я хочу делать запросы в фоновом режиме каждые 30 а не в фоновом режиме каждые 5, как правильно использовать Stream в этом случае?
Stream работает только при использовании StreamBuilder или как?
вот мой код:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
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> with WidgetsBindingObserver {
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
if (state == AppLifecycleState.resumed) {
// background proccess off
setPost(30);
} else {
// background proccess on
setPost(5);
}
}
Stream<int> setPost(int seconds) async* {
yield* Stream.periodic(Duration(seconds: seconds), (int i) {
post();
return i;
});
}
void post() async {
try {
var header = {
"Content-Type": "application/json",
};
var response = await http.post(url, headers: header);
if (response.statusCode == 200) {
print(response.body);
} else {
print(response.body);
}
} on SocketException catch (_) {
print('not connected');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Container(),
);
}
}