Flutter响应式编程 - RxDart
import 'package:flutter/material.dart';
import 'package:rxdart/rxdart.dart';
import 'dart:async'; class RxDartDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('RxDartDemo'),
elevation: 0.0,
),
body: RxDartDemoHome(),
);
}
} class RxDartDemoHome extends StatefulWidget {
@override
_RxDartDemoHomeState createState() => _RxDartDemoHomeState();
} class _RxDartDemoHomeState extends State<RxDartDemoHome> {
PublishSubject<String> _textFieldSubject; @override
void initState() {
super.initState(); _textFieldSubject = PublishSubject<String>(); _textFieldSubject
// .map((item) => 'item: $item')
// .where((item) => item.length > 9)
.debounce(Duration(milliseconds: 500))
.listen((data) => print(data)); // Observable<String> _observable =
// // Observable(Stream.fromIterable(['hello', '您好']));
// // Observable.fromFuture(Future.value('hello ~'));
// // Observable.fromIterable(['hello', '您好']);
// // Observable.just('hello ~');
// Observable.periodic(Duration(seconds: 3), (x) => x.toString()); // _observable.listen(print); // PublishSubject<String> _subject = PublishSubject<String>();
// BehaviorSubject<String> _subject = BehaviorSubject<String>();
// ReplaySubject<String> _subject = ReplaySubject<String>(maxSize: 2); // _subject.add('hello');
// _subject.add('hola');
// _subject.add('hi');
// _subject.listen((data) => print('listen 1: $data'));
// _subject.listen((data) => print('listen 2: ${data.toUpperCase()}')); // _subject.close();
} @override
void dispose() {
super.dispose();
_textFieldSubject.close();
} @override
Widget build(BuildContext context) {
return Theme(
data: Theme.of(context).copyWith(
primaryColor: Colors.black,
),
child: TextField(
onChanged: (value) {
_textFieldSubject.add('input: $value');
},
onSubmitted: (value) {
_textFieldSubject.add('submit: $value');
},
decoration: InputDecoration(
labelText: 'Title',
filled: true,
),
),
);
}
}
Flutter响应式编程 - RxDart的更多相关文章
- Flutter响应式编程 - Stream
1.前言 在Dart库中,有两种实现异步编程的方式(Future和Stream),使用它们只需要在代码中引入dart:async即可. 本文主要介绍Stream的相关概念及利用其异步特性来实现简单的响 ...
- iOS开发--Swift RAC响应式编程初探
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...
- IOS响应式编程框架ReactiveCocoa(RAC)使用示例
ReactiveCocoa是响应式编程(FRP)在iOS中的一个实现框架,它的开源地址为:https://github.com/ReactiveCocoa/ReactiveCocoa# :在网上看了几 ...
- 函数响应式编程(FRP)—基础概念篇
原文出处:http://ios.jobbole.com/86815/. 一函数响应式编程 说到函数响应式编程,就不得不提到函数式编程,他们俩有什么关系呢?今天我们就详细的解析一下他们的关系. 现在下面 ...
- Unity基于响应式编程(Reactive programming)入门
系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...
- iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好
转载: iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好 内容来自stack overflow的一个回答:ReactiveCocoa vs RxSwift – pros an ...
- [译] Swift 的响应式编程
原文 https://github.com/bboyfeiyu/iOS-tech-frontier/blob/master/issue-3/Swift的响应式编程.md 原文链接 : Reactiv ...
- iOS开发--Swift RAC响应式编程
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...
- 深入浅出-iOS函数式编程的实现 && 响应式编程概念
简介 本篇主要回顾一下--iOS函数式编程 && 响应式编程概念 ,如何一步步实现函数式编程的过程,对阅读Masonry && SnapKit源码有一定的帮助. 配图 ...
随机推荐
- node-mysql-promise 操作
使用node操作数据库做顺序操作很麻烦,为了保证执行顺序需要使用promise. 可以直接封装,也可以使用封装好的,比如node-mysql-promise 操作文档见https://www.npmj ...
- jmeter多机联合负载
操作步骤如下: 1.在负载机上部署Jmeter,确保Jmeter的bin目录下存在ApacheJMeter.jar与jmeter-server.bat两个文件. 2.双击启动负载机的jmeter-se ...
- The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use
java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more tha ...
- vscode——配置go插件
前言 这个真的折腾死我了,看了N多博客才弄好 这两个还是比较有用的~ https://www.cnblogs.com/nickchou/p/9038114.html https://www.jians ...
- 3. 控制反转(IoC)和依赖注入(DI)
1).控制反转是应用于软件工程领域中的,在运行时被装配器对象来绑定耦合对象的一种编程技巧,对象之间耦合关系在编译时通常是未知的.在传统的编程方式中,业务逻辑的流程是由应用程序中的早已被设定好关联关系的 ...
- bzoj1784: [Usaco2010 Jan]island
现在居然出现一道题只有\(pascal\)题解没有\(C++\)题解的情况,小蒟蒻要打破它. 思维题:分类讨论 回归正题,此题十分考验思维,首先我们要考虑如何把不会走的地方给填上,使最后只用求一遍这个 ...
- Linux 之 光标消失隐藏术
下面是 Linux 光标突然不见的解决办法: 直接敲命令行就行 echo -e "\033[?25l" 隐藏光标 echo -e "\033[?25h" 显示 ...
- 一个简单的直播demo for java
obs推流,nginx挂rtmp模块,配置rtmp端口,obs向此端口推流,video.js H5拉流播放 加阿里CDN 超级简单- -
- [C++11]C++可变参数模板
可变参数模板 原文链接: http://blog.csdn.net/xiaohu2022/article/details/69076281 普通模板只可以采取固定数量的模板参数.然而,有时候我们希望模 ...
- Session的数据共享
要体现出Session的数据共享,需要建立两个Servlet: 第一个:建立Session,将值设置为Tom. protected void doGet(HttpServletRequest requ ...