![](/img/trans.png)
[英]ListView.builder inside PageView inside SingleChildScrollView gets Unbounded Height Error
[英]Out of range error in PageView widget when the builder gets a value greater than 9
Data.length 为 10。对于第 10 个值,我出现超出范围错误,而我的项目数仍然 > 10。 为什么会这样
import 'package:flutter/material.dart';
import 'dart:ui';
import 'package:momnts/landscape.dart';
import 'myCard.dart';
import 'data.dart';
class Homepage extends StatefulWidget {
@override
_HomepageState createState() => _HomepageState();
}
class _HomepageState extends State<Homepage> {
var controller =PageController(initialPage: 0, viewportFraction: 0.8);
int currentPage = 0;
@override
void initState(){
controller.addListener((){
int next = controller.page.round();
if(currentPage!=next){
setState(() {
currentPage = next;
});
}
});
}
int totalLen = data.length+1;
@override
Widget build(BuildContext context) {
if (MediaQuery.of(context).orientation == Orientation.portrait) {
return Container(
color: Colors.white,
child: SafeArea(
child: Scaffold(
body: Container(
child: Column(
children: <Widget>[
Container(
height: 80.0,
child: Row(
children: <Widget>[
Expanded(
child: Text(
"Momnts",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 25.0,
fontFamily: "Pacifico",
),
),
),
],
),
),
Expanded(
child: PageView.builder(
itemCount: totalLen+1,
itemBuilder: (context,int currentIdx){
if(currentIdx==0)
return SimplePage();
else if(currentIdx<10)
return MyCard(id:currentIdx,text:data[currentIdx],image: AssetImage('images/S$currentIdx.jpg'),name:name[currentIdx]);
else
return MyCard(id:currentIdx,text:data[currentIdx],image: AssetImage('images/S$currentIdx.jpg'),name:name[currentIdx]);
},
scrollDirection: Axis.horizontal,
controller: controller,
),
),
],
))),
),
);
} else
return Landscape();
}
}
class SimplePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
child: Row(children: <Widget>[
Expanded(
child: Text("Yes",
style: TextStyle(fontSize: 30.0,),),
),
CircleAvatar(child: Icon(Icons.arrow_right),)
],)
);
}
}
这是显示的错误
The following RangeError was thrown building:
I/flutter (16859): RangeError (index): Invalid value: Not in range 0..9, inclusive: 10
I/flutter (16859):
I/flutter (16859): When the exception was thrown, this was the stack:
I/flutter (16859): #0 List.[] (dart:core-patch/growable_array.dart:149:60)
I/flutter (16859): #1 _HomepageState.build.<anonymous closure> (package:momnts/homepage.dart:65:66)
I/flutter (16859): #2 SliverChildBuilderDelegate.build (package:flutter/src/widgets/sliver.dart:446:15)**
如果您的data.length
是 10,那么您将传递 12 作为构建器的项目计数,我假设您应该有 10 所以data.length
。
int totalLen = data.length+1; //10+1
...
itemCount: totalLen+1, //10+1+1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.