flutter - 找不到 StreamZip 或 StreamGroup
问题描述
由于某种原因,我无法使用StreamGroup或StreamZip
这是代码(完全没用,但我不想激怒管理员)
import 'dart:async';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
const MyApp() : super(key: const Key('MyApp'));
@override
Widget build(BuildContext context) => const MaterialApp(home: MyHomePage());
}
class MyHomePage extends StatefulWidget {
const MyHomePage() : super(key: const Key('MyHomePage'));
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
static const _duration = Duration(seconds: 3);
static const _initialCx = 3.0;
final _pageStream = Stream<int>.periodic(_duration, (int i) => i);
ScrollController _scrollController;
StreamController<double> _throttle;
@override
void initState() {
_scrollController = ScrollController();
_throttle = StreamController();
StreamGroup<num>.merge([_pageStream, _throttle.stream]); // <= this
StreamZip([_pageStream, _throttle.stream]); // or this
/// i NEED TO IMPLEMENT A LISTENER HERE... THE CODE IS USELESS OTHERWISE
super.initState();
}
@override
void dispose() {
_scrollController?.dispose();
_throttle?.close();
super.dispose();
}
@override
Widget build(BuildContext context) => Scaffold(
body: Stack(children: <Widget>[
ListView.builder(
controller: _scrollController,
itemBuilder: (BuildContext context, int index) => const Center(
child: FlutterLogo(size: 160),
),
),
Align(
alignment: Alignment.bottomCenter,
child: StreamBuilder<double>(
builder: (context, throttle) => Slider(
min: 1,
max: 5,
onChanged: (double value) => _throttle.sink.add(value),
value: throttle.data ?? _initialCx,
),
),
),
]),
);
}
这里分别是错误
流压缩
没有为类型“_MyHomePageState”定义方法“StreamZip”。尝试将名称更正为现有方法的名称,或定义名为“StreamZip”的方法。
蒸汽集团
名称“StreamGroup”不是一个类。尝试更正名称以匹配现有类。
诚然,我对这些课程没有太多经验,所以解决方案可能很简单,
你能解释一下我如何访问这些吗?
谢谢
解决方案
由于 Flutter API 文档将所有内容合并在一起的方式,这并不明显,StreamZip
而是StreamGroup
来自. 您需要在文件中替换并添加依赖项。package:async
dart:async
import 'dart:async';
import 'package:async/async.dart';
async
pubspec.yaml
(尽管package:async
它来自 Dart 开发人员,但它是分开的,dart:async
因为:
- 中的类和函数
package:async
不被视为 Dart SDK 的核心部分。 package:async
可以用纯 Dart 代码实现。- 可以独立于 Dart SDK 单独更新一个单独的包,允许更频繁的更新。)
推荐阅读
- javascript - 构造一个只接受对象类型的类型?
- jenkins - Jenkins 登录本地安装
- flutter - 不能无条件调用该函数,因为它可以为“null”
- reactjs - 为什么 redux 只在浏览器刷新时更新?
- api - Tweepy - 有没有办法在 Twitter 上找到你的朋友之间的所有共同友谊?
- linechart - Vegalite - 忽略 NaN 和空值
- dynamics-crm - 无法在业务流程中添加工作流显示名称
- javascript - 如何在 VueJs 中使用 axios 创建 api 服务?
- mysql - MySQL Workbench 无法检测到任何正在运行的 MySQL 服务器。解决方案?
- linux - Bash 脚本说它在我的终端上有无效的选项