Search code examples
androidflutterdartmobile-applicationflutter-dependencies

Range error index invalid value not in range, 0..1 inclusive 2 in dart flutter app


I am following one flutter app tutorial and I encounter this error:

Range error index invalid value not in range, 0..1 inclusive 2

Any suggestions on how I can fix this?

import 'package:flutter/material.dart';

//void main() {
  //runApp(MyApp());
//}
void main()=>runApp(MyApp()); 
class MyApp extends StatefulWidget{

  @override
 State<StatefulWidget> createState(){
   return MyAppState();

 }
}

class MyAppState extends State<MyApp>{

var questionIndex=0;

  void answerQuestion(){
    setState(() {
      questionIndex=questionIndex+1;
    });
   print(questionIndex);
    //print("answer choosen!");
  }
@override
  Widget build(BuildContext context){ 

var questions=['What is your favourite colour','what is favourite animal',];

return MaterialApp(home: Scaffold(
appBar:AppBar(title:Text('my first app'),),
body: Column(children:[Text(questions[questionIndex]),
        //RaisedButton(child: Text("Ansewr 1"), onPressed:()=>print("Answer 1"),),
        //RaisedButton(child: Text("Ansewr 1"),onPressed:answerQuestion),
        RaisedButton(child: Text("Ansewr 0"), onPressed:answerQuestion,),
        RaisedButton(child: Text("Ansewr 1"), onPressed:answerQuestion,),



          ],),

),);
  }
}

Solution

  • I modify your code. Maybe that works for you. And don't use setState() method too much. Try learning bLoc archtecture.

    void main() => runApp(MyApp());
    
    class MyApp extends StatefulWidget {
    @override
    State<StatefulWidget> createState() {
    return MyAppState();
     }
    }
    
    enum Questions { firstQuestion, secondQuestion }
    
    class MyAppState extends State<MyApp> {
    var question = Questions.firstQuestion;
    
    @override
    Widget build(BuildContext context) {
    var questions = [
      'What is your favourite colour',
      'what is favourite animal',
    ];
    
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('my first app'),
        ),
        body: Column(
          children: [
            Text(questions[question.index]),
            RaisedButton(
              child: Text("Ansewr 0"),
              onPressed: () {
                setState(() {
                  question = Questions.firstQuestion;
                });
              },
            ),
            RaisedButton(
              child: Text("Ansewr 1"),
              onPressed: () {
                setState(() {
                  question = Questions.secondQuestion;
                });
              },
            ),
          ],
        ),
      ),
    );
    }
    }