import 'package:flutter/material.dart';
import 'package:rxdart/rxdart.dart';
class RxDartDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("RxDartDemo"),
),
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 > (("input:".length) + 5))
//防止频繁请求
.debounce(Duration(milliseconds: 500))
.listen((item) => {print(item)});
}
@override
void dispose() {
_textFieldSubject.close();
super.dispose();
}
@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),
));
}
}
会在输入框500毫秒后进行lisen里面的事件处理 而非突然就处理