getting stored data on my flutter hive makes me fall into this error:
════════ Exception caught by widgets library ═══════════════════════════════════
Unexpected character (at character 2) {id: 2, network: MTN, discount: 2, logo: mtncard.png} ^
Here is my class:
class Provider {
Provider({
required this.id,
required this.network,
required this.discount,
required this.logo,
});
final String id;
final String network;
final int discount;
final String logo;
factory Provider.fromJson(Map<String, dynamic> data) {
final id = data['id'] as String;
final network = data['network'] as String;
final discount = int.parse(data['discount']);
final logo = data['logo'] as String;
return Provider(
id: id,
network: network,
discount: discount,
logo: logo,
);
}
}
and here is my functions:
Future<List<dynamic>> LoadData() async {
final name = await Hive.box<dynamic>('my_db');
final result = name.values.toList();
print(result);
//print result is gotten perfectly from hive box
return name.values.toList();
}
this my furture builder also
FutureBuilder<List<dynamic>>(
future: LoadData(),
builder: (BuildContext context,
AsyncSnapshot snapshot) {
if (snapshot.data == null) {
return const Center(
child: Text('loading'),
);
} else {
return ListView.builder(
itemCount:
snapshot.data.length,
itemBuilder:
(BuildContext context,
int index) {
// Decoding the string to Map
final Map<String, dynamic>
decodedData =
jsonDecode(snapshot
.data[index]);
// Mapping the Map to Provider object
final itemData =
Provider.fromJson(
decodedData);
return ListTile(
title: Row(
crossAxisAlignment:
CrossAxisAlignment
.center,
children: [
SizedBox(
width: 20,
),
Row(
mainAxisAlignment:
MainAxisAlignment
.spaceEvenly,
children: [
Text(
itemData
.discount
.toString(),
style:
const TextStyle(
fontWeight:
FontWeight
.bold,
fontSize:
20,
color: Colors
.green,
),
),
Icon(
Icons
.more_horiz,
color: Colors
.blue,
),
],
),
],
),
);
},
);
}
}),
am newly flutter developer i dont have idea where the problem is but will be very glad to get a solution thanks for your impact in my question
There is an issue with the JSON decoding, which you can fix by encoding the JSON string first with the jsonEncode
function.
So, your code would look like this:
// Decoding the string to Map
final Map<String, dynamic> decodedData =
jsonDecode(jsonEncode(snapshot.data[index]));
Refer to the problem and the solution here: https://github.com/flutter/flutter/issues/32841#issuecomment-514454946