Flutter响应式编程 - RxDart
2024-08-26 17:28:25
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,
),
),
);
}
}
最新文章
- 扑面而来的碎片--图片3D炸裂效果初体验
- texrecon进行纹理映射
- jQuery返回顶部代码组件
- SpringMVC利用拦截器防止SQL注入
- RabbitMQ+PHP 消息队列环境配置
- 自定义UICollectionViewLayout并添加UIDynamic - scorpiozj(转)
- 四种方案:将OpenStack私有云部署到Hadoop MapReduce环境中
- Android Studio 连接真机调试
- HDU 4393 Throw nails(优先队列)
- MM们,你们为什么要找一个程序猿男票?
- C# checked和unchecked详解
- facenet 进行人脸识别测试
- org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.lang.Integer
- 解决IsEditable=";True";的ComboBox在DataGrid中点击一次不能选中行的问题
- 19_04_02校内训练[deadline]
- 微信小程序的界面下拉刷新
- windows 常用dos命令
- PO接口表
- Orcale11g单机安装与卸载
- layerui如何隐藏按钮?
热门文章
- pyspark AttributeError: &#39;NoneType&#39; object has no attribute &#39;setCallSite&#39;
- mingw控制台中文乱码
- workerman——消息推送(web-msg-send)
- Idea和eclipse安装activiti插件
- matlat保存矩阵数据
- js通过html的url获取参数值
- 1.6synchronized代码块
- 【洛谷2791】 幼儿园篮球题 第二类斯特林数+NTT
- [matlab工具箱] 曲线拟合Curve Fitting
- LibreOJ #528. 「LibreOJ β Round #4」求和