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]);
},
),
),
),
Author by
sigjak
Updated on December 24, 2022Comments
-
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 over 3 yearsRestart you app and redebuge, and supplie us with the real code
-