Flutter 使用列内的ListView为获取垂直视口提供了无限高
我想在Flutter 使用列内的ListView为获取垂直视口提供了无限高,flutter,Flutter,我想在列小部件中添加容器的列表 Column( crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[ fixedContainer(context), ), 列( crossAxisAlignment:crossAxisAlignment.start, 儿童:[ 固定容器(上下文), ), Widget-fixedContainer(构建上下文){ 返回列表视图( 儿童:[ 未来建设者(
列
小部件中添加容器
的列表
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
fixedContainer(context),
),
列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
固定容器(上下文),
),
Widget-fixedContainer(构建上下文){
返回列表视图(
儿童:[
未来建设者(
未来:未来,,
生成器:(上下文,快照){
if(snapshot.hasData){
返回列(
儿童:
snapshot.data.map((todo)=>nameColumn(todo)).toList();
}否则{
返回SizedBox();
}
},
),
],
);
}
小部件名称列(AddCash AddCash){
返回容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
颜色:颜色,白色,
边距:所有边集(4.0),
子:文本(
'名称:${addCash.name}',
),
);
}
“垂直视口被赋予无限高度”时出错。我需要设置高度吗?我没有设置高度,因为我需要动态添加容器
完整代码
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import '../data/repository_service_addcash.dart';
import '../models/addcash.dart';
class CalendarPage extends StatefulWidget {
@override
_CalendarPageState createState() => _CalendarPageState();
}
class _CalendarPageState extends State<CalendarPage> {
Future<List<AddCash>> future;
int id;
@override
initState() {
super.initState();
future = RepositoryServiceAddCash.getAllAddCash();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
//THE FIRST COLUMN NEEDS TO BY DYNAMICALLY PRODUCDED
// nameColumnContainer(context),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"ONE",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"TWO",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"THREE",
),
),
],
),
Flexible(
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
child: Row(
// children: getDaysInWeek(),
children: <Widget>[
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"A",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"B",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"C",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"D",
),
),
],
),
),
Container(
child: Row(
children: <Widget>[
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"H",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"F",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"3000",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"4000",
),
),
],
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"two",
),
),
],
),
),
)
],
),
),
);
}
Widget nameColumnContainer(BuildContext context) {
return ListView(
shrinkWrap: true,
children: <Widget>[
FutureBuilder<List<AddCash>>(
future: future,
builder: (context, snapshot) {
if (snapshot.hasData) {
return Column(
children:
snapshot.data.map((todo) => nameColumn(todo)).toList());
} else {
return SizedBox();
}
},
),
],
);
}
Widget nameColumn(AddCash addCash) {
return Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
'name: ${addCash.name}',
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“包:intl/intl.dart”;
导入“../data/repository_service_addcash.dart”;
导入“../models/addcash.dart”;
类CalendarPage扩展StatefulWidget{
@凌驾
_CalendarPageState createState()=>\u CalendarPageState();
}
类_CalendarPageState扩展状态{
未来;
int-id;
@凌驾
initState(){
super.initState();
future=RepositoryServiceAddCash.getAllAddCash();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:SingleChildScrollView(
孩子:排(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
纵队(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
//第一列需要动态生成
//nameColumnContainer(上下文),
容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
颜色:颜色,白色,
边距:所有边集(4.0),
子:文本(
“一个”,
),
),
容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
颜色:颜色,白色,
边距:所有边集(4.0),
子:文本(
“两个”,
),
),
容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
颜色:颜色,白色,
边距:所有边集(4.0),
子:文本(
“三”,
),
),
],
),
灵活的(
子:SingleChildScrollView(
滚动方向:轴水平,
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
容器(
孩子:排(
//儿童:getDaysInWeek(),
儿童:[
容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
颜色:颜色,白色,
边距:所有边集(4.0),
子:文本(
“A”,
),
),
容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
颜色:颜色,白色,
边距:所有边集(4.0),
子:文本(
“B”,
),
),
容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
颜色:颜色,白色,
边距:所有边集(4.0),
子:文本(
“C”,
),
),
容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
颜色:颜色,白色,
边距:所有边集(4.0),
子:文本(
“D”,
),
),
],
),
),
容器(
孩子:排(
儿童:[
容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
颜色:颜色,白色,
边距:所有边集(4.0),
子:文本(
“H”,
),
),
容器(
对齐:对齐.center,
宽度:120.0,
身高:60.0,
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import '../data/repository_service_addcash.dart';
import '../models/addcash.dart';
class CalendarPage extends StatefulWidget {
@override
_CalendarPageState createState() => _CalendarPageState();
}
class _CalendarPageState extends State<CalendarPage> {
Future<List<AddCash>> future;
int id;
@override
initState() {
super.initState();
future = RepositoryServiceAddCash.getAllAddCash();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
//THE FIRST COLUMN NEEDS TO BY DYNAMICALLY PRODUCDED
// nameColumnContainer(context),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"ONE",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"TWO",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"THREE",
),
),
],
),
Flexible(
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
child: Row(
// children: getDaysInWeek(),
children: <Widget>[
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"A",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"B",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"C",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"D",
),
),
],
),
),
Container(
child: Row(
children: <Widget>[
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"H",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"F",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"3000",
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"4000",
),
),
],
),
),
Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
"two",
),
),
],
),
),
)
],
),
),
);
}
Widget nameColumnContainer(BuildContext context) {
return ListView(
shrinkWrap: true,
children: <Widget>[
FutureBuilder<List<AddCash>>(
future: future,
builder: (context, snapshot) {
if (snapshot.hasData) {
return Column(
children:
snapshot.data.map((todo) => nameColumn(todo)).toList());
} else {
return SizedBox();
}
},
),
],
);
}
Widget nameColumn(AddCash addCash) {
return Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.white,
margin: EdgeInsets.all(4.0),
child: Text(
'name: ${addCash.name}',
),
);
}
}