RangeError(索引):无效值:不在0..99范围内,包括:100

时间:2020-04-18 15:04:08

标签: flutter

我是新来的。所以也许这是一个愚蠢的问题。

我正在创建一个使用随机列表图块的列表视图示例,但是当我在值Item 99之后滚动时,我将得到以下错误提示。

enter image description here

听是我的代码示例。

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

List<String> getListElement() {
  var items = List<String>.generate(100, (counter) => "Item $counter");
  return items;
}

Widget getListView(context) {
  var listItems = getListElement();


  var listView = ListView.builder(itemBuilder: (context, index) {
    return ListTile(
      title: Text(listItems[index]),
    );
  });

  return listView;
}

class RandomListViewExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('Listing View Demo'),
        backgroundColor: Colors.green,
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: null,
        child: Icon(Icons.arrow_back),
        backgroundColor: Colors.green,
      ),
      body: getListView(context),
    );
  }
}

1 个答案:

答案 0 :(得分:2)

ListView构建器具有itemCount参数来根据一定的长度生成项目。您有100个项目,因此需要将itemCount指定为100。我添加了 itemCount:listItems.length 以根据到listItems列表的长度(即100)。

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

List<String> getListElement() {
  var items = List<String>.generate(100, (counter) => "Item $counter");
  return items;
}

Widget getListView(context) {
  var listItems = getListElement();


  var listView = ListView.builder(itemBuilder: (context, index) {
    return ListTile(
      title: Text(listItems[index]),
    );
  },itemCount: listItems.length,);

  return listView;
}

class RandomListViewExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('Listing View Demo'),
        backgroundColor: Colors.green,
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: null,
        child: Icon(Icons.arrow_back),
        backgroundColor: Colors.green,
      ),
      body: getListView(context),
    );
  }
}