其他分享
首页 > 其他分享> > Flutter Stream简单应用

Flutter Stream简单应用

作者:互联网

Stream是什么?

为了将Stream的概念可视化与简单化,可以将它想成是管道(pipe)的两端,它只允许从一端插入数据并通过管道从另外一端流出数据。
在Flutter中,

在Dart库中,有两种实现异步编程的方式(FutureStream),使用它们只需要在代码中引入dart:async即可。
本文主要介绍Stream的相关概念及利用其异步特性来实现简单的响应式编程。

 

Stream可以传输什么?

任何东西都可以!包括简单的值,事件,对象,集合,map,error或者其他的Stream,任何类型的数据都可以使用Stream来传输。

 

Stream简单应用

3s后打印输出结果。或者是测试异常输出

import 'package:flutter/material.dart';

class StreamDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("StreamDemo"),
        elevation: 0.0,
      ),
      body: StreamDemoHome(),
    );
  }
}

class StreamDemoHome extends StatefulWidget {
  @override
  _StreamDemoHomeState createState() => _StreamDemoHomeState();
}

class _StreamDemoHomeState extends State<StreamDemoHome> {
  void onData(String data) {
    print("$data");
  }

  @override
  void initState() {
    super.initState();

    Future<String> fetchData() async {
      await Future.delayed(Duration(seconds: 3));
      throw "Something happend";
      return "hello~";
    }

    void one rror(error) {
      print("onError $error");
    }

    void onDone() {
      print("onDone");
    }

    print("Create a stream.");
    Stream<String> _streamDemo = Stream.fromFuture(fetchData());
    print("Start listening on a stream");
    _streamDemo.listen(onData, one rror: one rror, onDone: onDone);
    print("Initialize completed'");
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

输出

 

 

标签:onDone,Stream,onError,void,override,应用,print,Flutter
来源: https://blog.csdn.net/mp624183768/article/details/114875414