Hi Irsyad,
Future.error sebenarnya mirip dengan throw Exception, hanya saja Future.error lebih prefer dipakai pada function Future yang akan dipakai/dipanggil di bagian widget, karena jika terjadi error/exception dalam function tersebut tanpa kita catch dan return sebagai Future.error, maka pada saat memanggil function tersebut di widget contoh saja di FutureBuilder, maka akan terjadi error, karena kita tidak bisa menggunakan try catch pada widget.
Satu-satunya cara ngecek error diFutureBuilder yaitu dengan validasiin if(snapshot.hasError) seperti yang ada di file home_screen.dart kita ada menggunakan FutureBuilder kemudian kita memvalidasiin errornya seperti ini
if (notesSnapshot.hasError) {
return Center(child: Text(notesSnapshot.error.toString()));
}
begitu juga saat kita ingin menggunakan .catchError dari future sendiri seperti yang kita lakukan pada file note_item.dart saat memanggil function toggleIsPinned yang mana codenya seperti ini:
notesProvider.toggleIsPinned(note.id).catchError((onError) {
// nampilin scaffoldMessenger
});
nah jika kita mau agar .catchError ini menangkap error yang terjadi maka saat terjadi error function future tersebut harus return Future.error bukan throw Exception, karena jika error yang terjadi merupakan exception, maka akan error karena .catchError tersebut gk bisa ngecatch Exception tersebut.