как периодический делать 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(),
    );
  }
}

Ответы (0 шт):