错误参数类型“对象?”不能分配给参数类型“颜色?”

时间:2021-06-07 04:35:54

标签: flutter

有我的代码: StreamBuilder 有错误

<块引用>

错误参数类型“对象?”不能分配给参数 输入“颜色?

body: Center(
          child: StreamBuilder(
            stream: bloc.stateStream,
            initialData: Colors.amber,
            builder: (context, snapshot) {
              return AnimatedContainer(
                duration: Duration(milliseconds: 500),
                width: 100,
                height: 100,
                color: snapshot.data,
              );
            },
          ),
        ),
        body: Center(
          child: StreamBuilder(
            stream: bloc.stateStream,
            initialData: Colors.amber,
            builder: (context, snapshot) {
              return AnimatedContainer(
                duration: Duration(milliseconds: 500),
                width: 100,
                height: 100,
                color: snapshot.data,
              );
            },
          ),
        ),
      ),
    );
  },
}

1 个答案:

答案 0 :(得分:0)

您收到错误是因为 snapshot 的类型为 AsyncSnapshot<Object?> 并且当您将颜色设置为 snapshot.data 时,类型为 Object,因为颜色存在类型不匹配应该是 Color 类型。

您可以通过指定您的 StreamBuilder 正在使用的流类型来修复错误,如下所示:

    body: Center(
              child: StreamBuilder<Color>( //Add <Color> after StreamBuilder
                stream: bloc.stateStream,
                initialData: Colors.amber,
                builder: (context, snapshot) {
                  return AnimatedContainer(
                    duration: Duration(milliseconds: 500),
                    width: 100,
                    height: 100,
                    color: snapshot.data,
                  );
                },
              ),
    ),