Flutter: Error when displaying single list value

196

Try

body: Center(
        child: Container(
          padding: EdgeInsets.all(15),
          child: _names.isEmpty
              ? CircularProgressIndicator()
              : ListView.builder(
                  itemCount: _names.length,
                  itemBuilder: (context, index) {
                    return Text(_names[index]);
                  },
                ),
        ),
      ),
Share:
196
sigjak
Author by

sigjak

Updated on December 24, 2022

Comments

  • sigjak
    sigjak over 1 year

    In Flutter I am reading a file from disk and displaying the list items as a list. Using ListView.builder works fine but with a text widget displaying a single value I get this error. Can someone help?

    The error I get is The following RangeError was thrown building MyHomePage(dirty, state: _MyHomePageState#e9932): RangeError (index): Invalid value: Valid value range is empty: 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]),
             ),
           ),
         );
       }
     }
    
    
    • ElsayedDev
      ElsayedDev over 3 years
      Restart you app and redebuge, and supplie us with the real code