I have a flutter project that I want to migrate to the newest dependencies (Firestore, FirebaseAuth, FirebaseStorage, etc.).
I migrated all the code and also updated my library to be able to launch the app. In a lot of my firebase collections I do not have defined fields and previously when I request from Firebase the field it just returns null. Now instead, it creates an error Bad state: cannot get a field on a DocumentSnapshotPlatform which does not exist and the application cannot function properly.
I would appreciate solutions that would allow me to update my dependencies but not change the code base as much.
Dependencies in Pubspec.yaml file:
cupertino_icons: ^1.0.4
cloud_firestore: ^3.1.0
firebase_auth: ^3.2.0
curved_navigation_bar: ^1.0.1
grouped_list: ^4.1.0
random_color: ^1.0.6-nullsafety
intl: ^0.17.0
firebase_storage: ^10.1.0
image_picker: ^0.8.4+4
flutter_staggered_grid_view: ^0.4.1
carousel_slider: ^4.0.0
csv: ^5.0.0
path_provider: ^2.0.7
excel: ^2.0.0-null-safety-3
flutter_email_sender: ^5.0.2
firebase_core: ^1.10.0
firebase_messaging: ^11.1.0
auto_size_text: ^3.0.0
flutter_icons: ^1.1.0
camera: ^0.9.4+4
qr_code_scanner: ^0.6.1
package_info: ^2.0.2
url_launcher: ^6.0.13
Example Streambuilder code:
StreamBuilder(
stream: stream,
builder: (ctx, queryDetailSnapShot) {
if (queryDetailSnapShot.connectionState ==
ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
}
var priceDetail = queryDetailSnapShot.data.docs;
return ListView.builder(
reverse: false,
itemCount: priceDetail.length,
itemBuilder: (ctx, index) {
if (_selectedBottomIndex == 1) {
return CostExpenseRequestContainer(
widget.storenameUser,
widget.storeCostAcess,
widget.userName,
widget.userEmail,
widget.userId,
widget.userLanguage,
priceDetail[index]['Storename'],
priceDetail[index]['Created_dt'],
priceDetail[index]['Expense_type_en'],
priceDetail[index]['Expense_type_th'],
priceDetail[index]['Expense_amount_org'],
priceDetail[index]['Expense_amount_approved'],
priceDetail[index]['Visible_to'],
priceDetail[index]['Expense_status'],
priceDetail[index]['Photo_url'],
priceDetail[index]['Service_dt'],
priceDetail[index]['Partner_account_number'],
priceDetail[index]['Partner_value_th'],
priceDetail[index]['Partner_value_en'],
priceDetail[index].id,
key: ValueKey(priceDetail[index].id,),
);
} else
return CostExpenseTrContainer(
widget.storenameUser,
widget.storeCostAcess,
widget.userName,
widget.userEmail,
widget.userId,
widget.userLanguage,
priceDetail[index]['Storename'],
priceDetail[index]['Created_dt'],
priceDetail[index]['Service_dt'],
priceDetail[index]['Expense_type_en'],
priceDetail[index]['Expense_type_th'],
priceDetail[index]['Expense_amount'],
priceDetail[index]['Reversal_flg'],
priceDetail[index]['Visible_to'],
priceDetail[index].id,
priceDetail[index]['Parent_record_id'],
priceDetail[index]['Partner_account_number'],
key: ValueKey(
priceDetail[index].id,
),
);
});
}),
Error Message:
Bad state: cannot get a field on a DocumentSnapshotPlatform which does not exist