gpt4 book ai didi

dart - 如何使 Sink 格式化 Stream 的结果?

转载 作者:IT老高 更新时间:2023-10-28 12:41:34 32 4
gpt4 key购买 nike

在 google IO 18 中,Flutter 演示者展示了一个功能,但没有展示如何实现它。视频(准确时间)是:https://youtu.be/RS36gBEp8OI?t=1776

如何实现这样的事情?如何根据接收器正确地使流正确格式化?

(对不起,我对 Rx 不太熟悉)

最佳答案

使用 rxdart 包中的 combineLatest 函数。它采用输入流的最新值,因此只要语言环境或购物车项目发生变化,它就会计算并格式化总成本。

import 'dart:async'; // Sink, Stream
import 'dart:ui'; // Locale
import 'package:rxdart/rxdart.dart'; // Observable, *Subject

class Bloc {
var _locale = BehaviorSubject<Locale>(seedValue: Locale('en', 'US'));
var _items = BehaviorSubject<List<CartItem>>(seedValue: []);
Stream<String> _totalCost;

Sink<Locale> get locale => _locale.sink;
Stream<List<CartItem>> get items => _items.stream;
Stream<String> get totalCost => _totalCost;

Bloc() {
_totalCost = Observable.combineLatest2<Locale, List<CartItem>, String>(
_locale, _items, (locale, items) {
// TODO calculate total price of items and format based on locale
return 'USD 10.00';
}).asBroadcastStream();
}

void dispose() {
_locale.close();
_items.close();
}
}

免责声明:我没有尝试运行此代码,因此可能会出现错误,但基本思想应该是可靠的。

关于dart - 如何使 Sink<Locale> 格式化 Stream<String> 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52340948/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com