首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流生成器和AnimatedContainer

流生成器和AnimatedContainer
EN

Stack Overflow用户
提问于 2019-11-15 22:35:33
回答 1查看 325关注 0票数 0

项目

嗨,我正试着在flutter中使用这个布局

我希望将顶部容器设置为初始大小,然后让它的维度由流控制

代码

代码语言:javascript
复制
  Column(
    children: <Widget>[
      StreamBuilder(
        stream: streamController.stream ,
        initialData: initialData ,
        builder: (BuildContext context, AsyncSnapshot snapshot){
          return AnimatedContainer(
            duration: Duration(milliseconds: 300),
            height: 200,
          );
        },
      ),
      Expanded(
        child: AnimatedContainer(
          duration: Duration(milliseconds: 300),
          color: Colors.green,
        ),
      )
    ],
  ),

问题是,这永远不会在flutter中工作,因为我必须为列的子级提供一个高度,而在这种情况下,流构建器没有一个高度。我已经尝试过像其他人在其他帖子中建议的那样,将流生成器包装在一个灵活的小部件中,并使用Flexfit.loose,但这不是我的解决方案,并导致了以下结果:

有解决方案吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-15 22:49:40

你的代码就像你想要的那样工作,不是吗?

代码语言:javascript
复制
final streamController = StreamController<double>.broadcast();

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: SafeArea(
      child: Row(
        children: <Widget>[
          Expanded(
            child: Column(
              children: <Widget>[
                StreamBuilder(
                  stream: streamController.stream,
                  initialData: 200.0,
                  builder: (BuildContext context, AsyncSnapshot snapshot) {
                    return AnimatedContainer(
                      duration: Duration(milliseconds: 300),
                      height: snapshot.data,
                      color: Colors.blue
                    );
                  },
                ),
                Expanded(
                  child: AnimatedContainer(
                    duration: Duration(milliseconds: 300),
                    color: Colors.green,
                  ),
                )
              ],
            ),
          )
        ],
      ),
    ),
    floatingActionButton: FloatingActionButton(
      onPressed: () {
        streamController.add(Random().nextDouble() * 200);
      },
    ),
  );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58879183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档