Flutter 嵌套行/列中的颤振展开图

Flutter 嵌套行/列中的颤振展开图,flutter,flutter-layout,Flutter,Flutter Layout,我试图从中获取一个图表,当它位于列中的行中时,展开以填充可用空间。我花了几个小时试着这么做,但我肯定错过了什么!这就是我试图实现的目标: 这里有一个简单的工作示例。我一定试过100种扩展、灵活、主轴尺寸、交叉轴对齐等组合,但我似乎找不到正确的组合。当前底部溢出无限像素,布局期间对象被赋予无限大小。有,我不知道是否有关联,也没有答案。我只需要帮助了解一下runApp中的一些代码: import 'package:charts_flutter/flutter.dart' as charts; im

我试图从中获取一个图表,当它位于列中的行中时,展开以填充可用空间。我花了几个小时试着这么做,但我肯定错过了什么!这就是我试图实现的目标:

这里有一个简单的工作示例。我一定试过100种扩展、灵活、主轴尺寸、交叉轴对齐等组合,但我似乎找不到正确的组合。当前底部溢出无限像素,布局期间对象被赋予无限大小。有,我不知道是否有关联,也没有答案。我只需要帮助了解一下runApp中的一些代码:

import 'package:charts_flutter/flutter.dart' as charts;
import 'package:flutter/material.dart';

void main() => runApp(

  // HOW DO I LAY THIS OUT?
  Column(
    children: <Widget>[
      Container(height: 200, color: Colors.orange),
      Row(
        textDirection: TextDirection.ltr,
        children: <Widget>[
          Container(width: 200,color: Colors.orange),
          Expanded(child: SimpleTimeSeriesChart.withSampleData())
        ],
      )
    ],
  )
);

class SimpleTimeSeriesChart extends StatelessWidget {
  final List<charts.Series> seriesList;
  final bool animate;

  SimpleTimeSeriesChart(this.seriesList, {this.animate});

  factory SimpleTimeSeriesChart.withSampleData() {
    return new SimpleTimeSeriesChart(
      _createSampleData(),
      animate: false,
    );
  }

  @override
  Widget build(BuildContext context) {
    return new charts.TimeSeriesChart(
      seriesList,
      animate: animate,
      dateTimeFactory: const charts.LocalDateTimeFactory(),
    );
  }

  /// Create one series with sample hard coded data.
  static List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
    final data = [
      new TimeSeriesSales(new DateTime(2017, 9, 19), 5),
      new TimeSeriesSales(new DateTime(2017, 9, 26), 25),
      new TimeSeriesSales(new DateTime(2017, 10, 3), 100),
      new TimeSeriesSales(new DateTime(2017, 10, 10), 75),
    ];

    return [
      new charts.Series<TimeSeriesSales, DateTime>(
        id: 'Sales',
        colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
        domainFn: (TimeSeriesSales sales, _) => sales.time,
        measureFn: (TimeSeriesSales sales, _) => sales.sales,
        data: data,
      )
    ];
  }
}

class TimeSeriesSales {
  final DateTime time;
  final int sales;

  TimeSeriesSales(this.time, this.sales);
}
import'包:图表_flatter/flatter.dart'作为图表;
进口“包装:颤振/材料.省道”;
void main()=>runApp(
//我该怎么安排呢?
纵队(
儿童:[
容器(高度:200,颜色:颜色。橙色),
划船(
textDirection:textDirection.ltr,
儿童:[
容器(宽度:200,颜色:颜色。橙色),
已展开(子项:SimpleTimesRiesChart.withSampleData())
],
)
],
)
);
类SimpleTimesRiesChart扩展了无状态小部件{
最终清单系列清单;
最后的布尔动画;
SimpleTimeSeriesChart(this.seriesList,{this.animate});
工厂SimpleTimeriesChart.with采样数据(){
返回新的SimpleTimeriesChart(
_createSampleData(),
动画:假,
);
}
@凌驾
小部件构建(构建上下文){
返回新图表。TimeSeriesChart(
系列列表,
动画制作:动画制作,
dateTimeFactory:const charts.LocalDateTimeFactory(),
);
}
///使用示例硬编码数据创建一个系列。
静态列表_createSampleData(){
最终数据=[
新时间系列(新日期时间(2017年9月19日),5),
新时间系列(新日期时间(2017年9月26日),25日),
新时间系列(新日期时间(2017年10月3日),100),
新时间系列(新日期时间(2017,10,10,75),
];
返回[
新图表系列(
id:'销售',
颜色fn:(u,uu)=>charts.materialpalete.blue.shadedfault,
domainFn:(TimeSeriesSales sales,)=>sales.time,
measureFn:(TimeSeriesSales sales,)=>sales.sales,
数据:数据,
)
];
}
}
课堂时间体验{
最终日期时间;
最终销售;
TimeSeriesSales(this.time,this.sales);
}

**查看第8步的原因-向下滚动只需将
包装在一个
展开的
小部件中即可

 Column(
    children: <Widget>[
      Container(height: 200, color: Colors.orange),
      Expanded(
        child: Row(
        textDirection: TextDirection.ltr,
        children: <Widget>[
          Container(width: 200,color: Colors.orange),
          Expanded(child: SimpleTimeSeriesChart.withSampleData())
        ],
      )
     )
    ],
  )
列(
儿童:[
容器(高度:200,颜色:颜色。橙色),
扩大(
孩子:排(
textDirection:textDirection.ltr,
儿童:[
容器(宽度:200,颜色:颜色。橙色),
已展开(子项:SimpleTimesRiesChart.withSampleData())
],
)
)
],
)
解释是,
在创建时将为其子项提供无限约束,并且当您将任何子项包装在
灵活的
小部件中时,它将根据可用空间(以及某些属性,如果有的话)进行相应的操作


的作用方式完全相同,但水平。在这里,您正确地将
展开的
添加到
子项中,但随后,它尝试查找它不能扩展到多少大小,而
不知道,因为它与父项(
)的高度仍然没有限制,这就是为什么如果你不需要容纳可用空间,你应该使用扩展的
或者甚至是灵活的

谢谢-出于某种原因,我从来没有想过将行包装成扩展的!你得到了第一个正确答案的奖励,但是穆罕默德的答案被接受了,因为它也是正确的,但更全面。超级全面的答案,谢谢!米格尔是第一个,所以他得到了bounty@JamesAllen我的答案是2019-08-28 17:16:56Z米格尔在2019-08-28 17:33:09Z我的答案比他早15分钟哦,该死的,你说得对,对不起,穆罕默德-这太奇怪了,我肯定我先看到了米格尔的答案。我看不出有什么办法可以改变悬赏。对不起,伙计,我的错