Как исправить ошибку 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-ответ, и затем скорректируйте свой код в соответствии с ним.

Мы не можем сказать, так как вы не представили свой ответ.

Вернуться на верх