在flutter TextField Widget中观察者模式的意义是什么



我的任务是创建一个页面,在向TextField输入一些文本后,我需要检索使用http请求获得的帖子列表。

我的团队负责人告诉我,我应该使用观察者模式,这在以前是我不知道的。在他向我解释了三次之后,我现在知道它的作用了。

但我无法理解为什么我要在TextField小部件中使用它而不是onChanged属性,该小部件已经侦听对TextField所做的任何更改,并将文本发送到实体,然后我用它来发送http请求。

用更简单的术语和简单的类比向我解释,这样我就可以一劳永逸地理解它。谢谢你的回答。

我会试试的。当您使用onChanged发送关于文本更改的http请求时,可能会在短时间内发送太多请求。假设用户输入了一个长单词,然后由于拼写错误删除了一些符号,然后再次输入。每次更改都会发送太多的http请求,对吧?如果你有很多用户呢?

为了避免不必要的网络负载,您需要取消对文本字段的更改。观察者模式和rxDart是这样做的选项

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:rxdart/rxdart.dart';
class SomeWidgetState extends State<SomeWidget> {
final textStreamController = StreamController<String>();
Stream<String> get textStream => textStreamController.stream;
StreamSubscription textStreamSubscription;
@override
void initState() {
// HERE is how to use debounce
textStreamSubscription =
textStream.debounceTime(Duration(seconds: 1)).listen(sendRequest);
super.initState();
}
@override
void dispose() {
textStreamController.close();
textStreamSubscription.cancel();
super.dispose();
}
void sendRequest(String text) {
// Here you can send http request
}
@override
Widget build(BuildContext context) {
return TextField(onChanged: textStreamController.add);
}
}

我想你的团队领导想采取这种方法。

最新更新