简体   繁体   English

当构建器获得大于 9 的值时,PageView 小部件中出现超出范围错误

[英]Out of range error in PageView widget when the builder gets a value greater than 9

Data.length is 10. For the 10th value, I'm getting out of range error, while my Item count is still>10. Data.length 为 10。对于第 10 个值,我出现超出范围错误,而我的项目数仍然 > 10。 Why is this happening为什么会这样

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),)
      ],)
    );
  }
}

This is the error shown这是显示的错误

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)**     

If your data.length is 10 then you are passing 12 as your item count for the builder, where I'd assume you should have 10 so data.length .如果您的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.

相关问题 SingleChildScrollView 内的 PageView 内的 ListView.builder 出现无限高度错误 - ListView.builder inside PageView inside SingleChildScrollView gets Unbounded Height Error 删除 pageview.builder 小部件底部的多余空间 - remove excess space at the bottom of my pageview.builder widget 如何在 PageView 构建器中模糊即将到来的和之前的小部件 - Flutter - How to blur the upcoming and previous widget in PageView builder - Flutter Flutter:在 PageView.builder 中创建页面小部件作为列表大小的数量 - Flutter: Create page widget as number of list size in PageView.builder Flutter 范围错误 ListView 的值无效,而不是 Builder - Flutter Range Error Invalid Value with ListView, not Builder 当小部件在颤动中位于其前面时,在 PageView 中滑动 - Swipe in PageView when a widget is in front of it in flutter Flutter PageView 在没有小部件时防止滑动 - Flutter PageView prevent swiping when there's no widget Provider 在 ReorderableListView 中拖动 Widget 时退出 scope 并抛出错误 - Provider gets out of scope while dragging Widget in ReorderableListView and throws Error Flutter:索引超出范围错误,列出小部件中的元素可用性 - Flutter: Index out of range error, List Element Availability In Widget 给出水平视口的 PageView.builder 给出了无限的高度错误 - PageView.builder giving Horizontal viewport was given unbounded height error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM