Managing and Merging Streams and Using Types for Matching in Dart's Flutter Framework

in utopian-io •  8 months ago



What Will I Learn?

  • You will learn how to use Types to specifically filter lists
  • You will learn how to merge Streams
  • You will learn about Lazy Streams
  • You will learn how to create StreamZips
  • You will learn about StreamGroups


System Requirements:
OS Support for Flutter:
  • Windows 7 SP1 or later (64-bit)
  • macOS (64-bit)
  • Linux (64-bit)

Required Knowledge

  • A little understanding of streams
  • Some understanding of type checking
  • A fair understanding of Mobile development and Imperative or Object Oriented Programming

Resources for Flutter and this Project:


Flutter Logo (Google):


  • Intermediate


Outline and Overview

In this Flutter Video Tutorial, we take a look at how we can filter and build a list based on what types of data we have. We are able to specifically build different widgets based on the type that is being passed into our list using the is keyword. We also look at how we can merge streams using the StreamGroup and StreamZip objects. Finally, we take a look at how we can pull from multiple API and API endpoints at one given time.

Outline for this Tutorial
Using Types in Logical Operators

Types are very important in any programming language and they can be especially important in Object Oriented Programming languages like Dart. The majority of Types that you create in a Flutter application are objects. You can use these objects and types to create boolean operators using the syntactic sugar keyword is. With is we can check what type an instance variable is and then make decisions based on that check.


In this code, we use the is keyword to determine which type of data we are working with. We then are able to choose what widget template we want to use for this list item. This allows us to create more then one widget template for the ListView builder in a programmatic way.

Grouping Streams with Stream Groups

In this application, we are calling to two APIs are once. Because of this, we want to be able to consolidate the outputs from these APIs into a single stream. This stream can then be sent to the frontend of our application where we can change the layout of our widgets based on the type of the data flowing through the stream. To combine the two streams together we use the StreamGroup and LazyStream Objects.


In this code, we have an example of these StreamGroup and LazyStream Objects. The LazyStream objects are streams that only start to present their data through the stream when a listener is attached. This means that the program doesn't need to compute the streams until the listener needs the data. The StreamGroup object allows us to merge two or more streams into a single stream which can act like any other stream.

Bundling Streams with Stream Zip

Stream Groups can be useful for various different applications but sometimes the sources of these streams do not produce events at the same speed. This is common for various APIs that come from the web and from your device. If you want your data to present at the same time and you still want to bundle the data together then using a StreamZip is a good consideration.


The StreamZip object lets us pair off different stream data events in small lists. This means that rather then flattening the streams into a single stream, we bundle the streams into a list which is then sent down another stream. With this list, we can ensure that the data being passed through the stream is attached to each other data event which minimizes the latency. If one of the streams stops producing events, then all of the streams will terminate.

The source code for this project can be found here

Video Tutorial

Projects and Series

Stand Alone Projects:
Building a Calculator
Movie Searcher Application

Minesweeper Game

Weather Application


Proof of Work Done

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Great work again @tensor.

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.

Need help? Write a ticket on
Chat with us on Discord.

Hey @tensor
Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Contributing on Utopian
Learn how to contribute on our website or by watching this tutorial on Youtube.

Want to chat? Join us on Discord

Vote for Utopian Witness!