找不到 StreamZip 或 StreamGroup

Fra*_*cca 2 asynchronous stream dart flutter

由于某种原因,我无法使用StreamGroupStreamZip

这是代码(完全没用,但我不想激怒管理员)

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,
              ),
            ),
          ),
        ]),
      );
}

Run Code Online (Sandbox Code Playgroud)

这里分别是错误

压缩包

没有为类型“_MyHomePageState”定义方法“StreamZip”。尝试将名称更正为现有方法的名称,或定义名为“StreamZip”的方法。

流压缩错误

蒸汽集团

名称“StreamGroup”不是一个类。尝试更正名称以匹配现有类。

流组错误

诚然,我对这些课程没有太多经验,所以解决方案可能很简单,

你能解释一下我如何访问这些吗?

谢谢

jam*_*lin 9

这不是很明显,由于方式,颤振API文档合并一切融合在一起,而是StreamZipStreamGroup来自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 分开更新,允许更频繁的更新。)