当前位置: 首页 > 知识库问答 >
问题:

颤振:显示单个列表值时出错

吴浩皛
2023-03-14

在flatter中,我从磁盘读取一个文件,并将列表项显示为一个列表。使用ListView。生成器工作正常,但如果文本小部件显示单个值,则会出现此错误。有人能帮忙吗?

我得到的错误是以下RangeError在构建MyHomePage时抛出(脏,状态:_MyHomePageState#e9932):RangeError(索引):无效值:有效值范围为空:9


 import 'package:flutter/material.dart';
 import 'dart:convert';
 import 'package:flutter/services.dart';
 import 'dart:async';
 
 void main() {
   runApp(MyApp());
 }
 
 class MyApp extends StatelessWidget {
   //This widget is the root of your application.
   @override
   Widget build(BuildContext context) {
     return MaterialApp(
       title: 'Flutter Demo',
       theme: ThemeData(
         primarySwatch: Colors.blue,
         visualDensity: VisualDensity.adaptivePlatformDensity,
       ),
       home: MyHomePage(),
     );
   }
 }
 
 ______________________________
 
         WITH List.View.builder
 
 class MyHomePage extends StatefulWidget {
   @override
   _MyHomePageState createState() => _MyHomePageState();
 }
 
 class _MyHomePageState extends State<MyHomePage> {
   List<String> _names = [];
 
   Future<List<String>> loadNames() async {
     List<String> names = [];
     await rootBundle.loadString('assets/Stulkur_A.txt').then((q) => {
           for (String i in LineSplitter().convert(q)) {names.add(i)}
         });
     return names;
   }
 
   _setup() async {
     List<String> names = await loadNames();
     setState(() {
       _names = names;
     });
   }
 
   @override
   void initState() {
     _setup();
     super.initState();
   }
 
   @override
   Widget build(BuildContext context) {
     return Scaffold(
       appBar: AppBar(
         title: Text('Names'),
       ),
       body: Center(
         child: Container(
             padding: EdgeInsets.all(15),
             child: ListView.builder(
                 itemCount: _names.length,
                 itemBuilder: (context, index) {
                   return Text(_names[index]);
                 })),
       ),
     );
   }
 }
 
 _____________________
 
 WITH Text widget
 
 class MyHomePage extends StatefulWidget {
   @override
   _MyHomePageState createState() => _MyHomePageState();
 }
 
 class _MyHomePageState extends State<MyHomePage> {
   List<String> _names = [];
 
   Future<List<String>> loadNames() async {
     List<String> names = [];
     await rootBundle.loadString('assets/Stulkur_A.txt').then((q) => {
           for (String i in LineSplitter().convert(q)) {names.add(i)}
         });
     return names;
   }
 
   _setup() async {
     List<String> names = await loadNames();
     setState(() {
       _names = names;
     });
   }
 
   @override
   void initState() {
     _setup();
     super.initState();
   }
 
   @override
   Widget build(BuildContext context) {
     return Scaffold(
       appBar: AppBar(
         title: Text('Names'),
       ),
       body: Center(
         child: Container(
           padding: EdgeInsets.all(15),
           child: Text(_names[9]),
         ),
       ),
     );
   }
 }

共有2个答案

鲁滨海
2023-03-14

你应该检查一下你的名字。length==0显示加载程序或您想要的所有内容,否则显示ListView小部件。

杨选
2023-03-14

尝试

body: Center(
        child: Container(
          padding: EdgeInsets.all(15),
          child: _names.isEmpty
              ? CircularProgressIndicator()
              : ListView.builder(
                  itemCount: _names.length,
                  itemBuilder: (context, index) {
                    return Text(_names[index]);
                  },
                ),
        ),
      ),
 类似资料:
  • 我正在尝试将我的颤动应用程序连接到我的手机,但它不起作用...我在终端中写了,它向我展示了一些错误: 我正在使用VS代码(如果很重要)。SDK管理器的路径是什么?为什么对我说“视觉工作室未安装”,如果它写在VS代码终端中? 谢谢大家!

  • null 请注意,我试图展示一个本地旋转器。谢了!

  • 我有一个FutureBuilder(很高兴加载)从Firebase获取我的DocumentSnapshot列表,但问题是如果我推送/弹出屏幕,它会一遍又一遍地重建它。为了解决这个问题,我最终将它放在了上,但我有一个问题,我有时无法从中获取所有文档。 我有一个按钮可以启用国家/地区筛选和禁用,每次按下它几乎都会立即显示我的文档,例如,我总共筛选了11个国家/地区,筛选了5个国家/地区,但有时我不会全

  • 我有以下 我有下面的方法 API中的JSON格式。 返回模型公司时出现问题。fromJson(response.data) fetchcompanys中的code>给出错误

  • 我试图列出屏幕上剩余的应用编程接口的信息。我有这个方法: 这里我得到的错误: _类型错误(类型“\u InternalLinkedHashMap 我也尝试过这种做法: 但这里我得到了一个错误: _类型错误(类型“\u InternalLinkedHashMap 你们可以帮我解决这个错误。我感谢您的评论! 更新我也用过这种方法,但没有用! 我的模型:

  • 特莫拉。png没有显示。 图片出现在我的代码中: 颤振抛出的错误: 资产图像/TMORA。png不存在。尝试创建文件或修复文件路径。dart(资产不存在)[51,8] 不过,这一形象确实存在。当我点击资产/图像文件夹时,我可以看到它 我相信问题源于我的yaml文件(如下所示) 完整的代码(将TMORA.png行注释掉以删除错误)出现在Github上 注意:我有两个名为images的文件夹。一个是p