#flutter #dart #null #youtube-api
Вопрос:
Мой код на главной странице.dart
// ignore_for_file: sized_box_for_whitespace, prefer_const_constructors, unused_element, avoid_unnecessary_containers import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:friendlycourse/UI/modals/channel_info.dart'; import 'package:friendlycourse/UI/net/services.dart'; import 'package:friendlycourse/UI/screens/drawer.dart'; class MyHomePage extends StatefulWidget { const MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override Statelt;MyHomePagegt; createState() =gt; _MyHomePageState(); } class _MyHomePageState extends Statelt;MyHomePagegt; { // get searchBar =gt; null; ChannelInfo? _channelInfo; Item? _item; // late bool _loading; @override void initState() { super.initState(); // _loading = true; _getChannelInfo(); } _getChannelInfo() async { _channelInfo = await Services.getChannelInfo(); _item = _channelInfo!.items[0]; // setState(() { // _loading = false; // }); } @override Widget build(BuildContext context) { return Scaffold( drawer: MyDrawer(), appBar: AppBar( title: Text(widget.title), // actions: lt;Widgetgt;[ // IconButton(icon: Icon(Icons.search),onPressed: (){},) // ], ), body: Container( child: Column( children: [ _buildInfoView(), ], ), ), ); } _buildInfoView() { return Container( child: Card( child: Row( children: [ CircleAvatar( backgroundImage: CachedNetworkImageProvider( _item!.snippet.thumbnails.medium.url, ), ), SizedBox( width: 20, ), Text( _item!.snippet.title, style: TextStyle( fontSize: 20, fontWeight: FontWeight.w400, ), ) ], ), )); } } My code in services.dart import 'dart:io'; import 'package:friendlycourse/UI/modals/channel_info.dart'; import 'package:friendlycourse/UI/net/constants.dart'; import 'package:http/http.dart' as http; import 'package:http/http.dart'; class Services { static const channelId = 'UCBwmMxybNva6P_5VmxjzwqA'; static const _baseUrl = 'youtube.googleapis.com'; static Futurelt;ChannelInfogt; getChannelInfo() async { Maplt;String, Stringgt; parameters = { 'part': 'snippet', 'id': channelId, 'key': Constant.apikey, }; Maplt;String, Stringgt; headers = { HttpHeaders.contentTypeHeader: 'application/json' }; Uri uri = Uri.https(_baseUrl, 'youtube/v3/search', parameters); Response response = await http.get(uri, headers: headers); print(response.body); ChannelInfo channelInfo = channelInfoFromJson(response.body); return channelInfo;**
- подчеркнутый текст
** Я пытаюсь сделать приложение для видеоплеера flutter с помощью youtube api v3, и в коде нет ошибки, но после его запуска мое устройство выдает мне ошибку: «оператор проверки null использовал нулевое значение» я не знаю, как решить проблему, пожалуйста, помогите мне. Я новичок в флаттере. } }
Комментарии:
1. Вы получаете эту ошибку в строке _item!.snippet.thumbnail?
Ответ №1:
повторите свой код:
_channelInfo = await Services.getChannelInfo(); _item = _channelInfo!.items[0];
с этим:
await Services.getChannelInfo().then((value) =gt; { _item = value!.items[0]; });
Комментарии:
1. Теперь я получаю эту ошибку «Ожидал найти»}»».