![](/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.