Range Error (Index) Flutter GETX : invalid value

Issue

Here I have an error when I fetch data, I take a reference from youtube then I apply and use data from local but when I run it I get an error as I described. here is my source code

Controller.dart
class ProdukKonvensionalController extends GetxController {

  var konvenList = <ProdukKonvenModel>[].obs;
  var isLoading = true.obs;

  @override
  void onInit() {
    super.onInit();
    fetchKonven();
  }

  Future<void> fetchKonven() async {
    final response =
        await http.get(Uri.parse('http://192.168.100.207:8080/konven'));

    if (response.statusCode == 200) {
      ProdukKonvenModel _produkkonvenModel =
          ProdukKonvenModel.fromJson(jsonDecode(response.body));

      konvenList.add(ProdukKonvenModel(
        kategoriNama: _produkkonvenModel.kategoriNama,
        kategoriId: _produkkonvenModel.kategoriId,
        kontenId: _produkkonvenModel.kontenId,
        kontenMenu: _produkkonvenModel.kontenMenu,
        kontenParent: _produkkonvenModel.kontenParent,
        kontenUrl: _produkkonvenModel.kontenUrl,
      ));

      isLoading.value = true;
    } else {
      Get.snackbar("Error Loading Data",
          'Server Responded: ${response.statusCode}:${response.reasonPhrase.toString()}');
    }
  }
}

PageView.dart

class ProdukKonvensionalPage extends StatelessWidget {
  const ProdukKonvensionalPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    final _controller = Get.find<ProdukKonvensionalController>();
    return Scaffold(
      body: SingleChildScrollView(
          child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Text('${_controller.konvenList[0].kategoriNama}'),
        ],
      )),
    );
  }
}

and the following shows an error

enter image description here

Solution

try this

var konvenList = <ProdukKonvenModel>[].obs;
var isLoading = true.obs;

@override
void onInit() {
super.onInit();
fetchKonven();
}

 Future<void> fetchKonven() async {
  final response = await http.get(Uri.parse('http://192.168.100.207:8080/konven'));

if (response.statusCode == 200) {
  ProdukKonvenModel _produkkonvenModel =
      ProdukKonvenModel.fromJson(jsonDecode(response.body));

 
 _produkkonvenModel.forEach((element) =>  konvenList.add(element));

  

  isLoading.value = true;
} else {
  Get.snackbar("Error Loading Data",
      'Server Responded: 
  ${response.statusCode}:${response.reasonPhrase.toString()}');
   }
 }
}

Answered By – Kundan mandal

Answer Checked By – Robin (FlutterFixes Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *