Как исправить ошибку type 'Null' is not a subtype of type 'Map<dynamic, dynamic>' in type cast error
Привет, я новичок в flutter & dart.
Я пытаюсь получить api Django Rest Framework, используя следующий test.dart
import 'dart:convert';
import 'package:http/http.dart' as http;
// var response = await http.get(Uri.parse("http://127.0.0.1:8000/"));
// print(response.body);
Future<void> main() async {
final response =
await http.get(Uri.parse("http://127.0.0.1:8000/api/Username/items/"));
final decoded = jsonDecode(response.body) as Map;
final data = decoded['data'] as Map;
print(data['name']);
for (final name in data.keys) {
final value = data[name];
print('$name,$value');
}
}
Вот api.views
@api_view(['GET'])
def getItem(request, **kwargs):
user = get_object_or_404(User, username=request.user)
items=Item.objects.filter(user=user)
serializer = ItemSerializer(workouts, many=True)
return Response(serializer.data)
Вот api/urls:
path('<str:username>/workouts/',views.getWorkout, name='api_workout'),
Вот serializer.py
class ItemSerializer(serializers.ModelSerializer):
user = serializers.CharField(source="user.username", read_only=True)
class Meta:
model= Workout
fields = '__all__'
Я не уверен, почему я получаю:
Unhandled exception:
type 'Null' is not a subtype of type 'Map<dynamic, dynamic>' in type cast
#0 main
bin\test.dart:11
<asynchronous suspension>
Мой вопрос:
Почему я получаю эту ошибку и как я могу получить доступ к api json в упомянутом http
decoded['data']
в вашем случае, вероятно, равен нулю.
Чтобы просто избежать проблемы, вы можете вместо этого сделать as Map?
. Но проверьте, как выглядит ваш json-ответ, и затем скорректируйте свой код в соответствии с ним.
Мы не можем сказать, так как вы не представили свой ответ.