Flutter TextField Widget 中的观察者模式有什么意义?

What is the point of observer pattern in flutter TextField Widget?

我的任务是制作一个页面,在其中将一些文本输入到 TextField 中后,我需要检索使用 http 请求获得的帖子列表。

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

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

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

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

为了避免不必要的网络负载,您需要 debounce text field changes. Observer pattern and 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);
  }
}

我猜你的组长想采用这种方法。