Search code examples
flutterflutter-getx

Range Error (Index) Flutter GETX : invalid value


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()}');
       }
     }
    }