Flutter 具有多个滚动方向的颤振列表视图

Flutter 具有多个滚动方向的颤振列表视图,flutter,Flutter,我有一个按天计小时的时间表 Widget\u构建计划(ScheduleLoaded状态){ 最终列表天数=state.range.days.map((DateTime-day){ 返回列( 儿童: _BuildTimeslot(天、州、Timeslot.toList()), ); }).toList(); 返回列表视图(滚动方向:Axis.horizontal,子项:天); } 现在我正试图让它也可以垂直滚动(按天或全屏幕分别滚动) Widget\u构建计划(ScheduleLoaded状态

我有一个按天计小时的时间表

Widget\u构建计划(ScheduleLoaded状态){
最终列表天数=state.range.days.map((DateTime-day){
返回列(
儿童:
_BuildTimeslot(天、州、Timeslot.toList()),
);
}).toList();
返回列表视图(滚动方向:Axis.horizontal,子项:天);
}
现在我正试图让它也可以垂直滚动(按天或全屏幕分别滚动)

Widget\u构建计划(ScheduleLoaded状态){
最终列表天数=state.range.days.map((DateTime-day){
返回列表视图(
收缩膜:对,
物理:ClampingScrollPhysics(),
子项:\u构建时隙(天、州、时隙、toList())
);
}).toList();
返回列表视图(滚动方向:Axis.horizontal,子项:天);
}

根据嵌套的ListView上的相关答案,带有
包覆面处理
夹持的ScrollPhysics
应该可以工作,但是第二个版本不能用错误呈现“constraints.hasbundedWidth”:不正确。

下面的代码给出了如果您的时段具有固定宽度,您需要的内容。如果我误解了你的需要,请纠正我

Widget _buildSchedule() {
        return ListView(
            scrollDirection: Axis.horizontal,
            children: List<int>.generate(10, (i) => i).map((i) {
                return Container(
                    width: 200.0,
                  child: ListView(
                      //shrinkWrap: true,
                      //physics: ClampingScrollPhysics(),
                      scrollDirection: Axis.vertical,
                      children: List<int>.generate(Random().nextInt(20) + 1, (i) => i).map((j) {
                          return Padding(
                              padding: const EdgeInsets.all(8.0),
                              child: Container(
                                  color: Colors.grey,
                                  padding: const EdgeInsets.all(8.0),
                                  child: Text(
                                      "$j item of $i row"
                                  )
                              ),
                          );
                      }).toList()
                  ),
                );
            }).toList()
        );
    }
Widget\u buildSchedule(){
返回列表视图(
滚动方向:轴水平,
子项:List.generate(10,(i)=>i.map((i){
返回容器(
宽度:200.0,
子:ListView(
//收缩膜:对,
//物理:ClampingScrollPhysics(),
滚动方向:轴垂直,
子项:List.generate(Random().nextInt(20)+1,(i)=>i.map((j){
返回填充(
填充:常数边集全部(8.0),
子:容器(
颜色:颜色。灰色,
填充:常数边集全部(8.0),
子:文本(
“$i行的$j项”
)
),
);
})托利斯先生()
),
);
})托利斯先生()
);
}

  Widget _buildSchedule(ScheduleLoaded state) {
    final List<Widget> days = state.range.days.map((DateTime day) {
      return ListView(
        shrinkWrap: true,
        physics: ClampingScrollPhysics(),
        children: _buildTimeSlots(day, state.timeSlots.toList())
      );
    }).toList();

    return ListView( scrollDirection: Axis.horizontal, children: days);
  }
Widget _buildSchedule() {
        return ListView(
            scrollDirection: Axis.horizontal,
            children: List<int>.generate(10, (i) => i).map((i) {
                return Container(
                    width: 200.0,
                  child: ListView(
                      //shrinkWrap: true,
                      //physics: ClampingScrollPhysics(),
                      scrollDirection: Axis.vertical,
                      children: List<int>.generate(Random().nextInt(20) + 1, (i) => i).map((j) {
                          return Padding(
                              padding: const EdgeInsets.all(8.0),
                              child: Container(
                                  color: Colors.grey,
                                  padding: const EdgeInsets.all(8.0),
                                  child: Text(
                                      "$j item of $i row"
                                  )
                              ),
                          );
                      }).toList()
                  ),
                );
            }).toList()
        );
    }