我正在使用 tmdb_api 制作电影应用程序。
我将包添加到 pubspce.yml 并进行了 pubget。当然,它是正常添加的。
dependencies:
flutter:
sdk: flutter
tmdb_api: ^1.2.7
google_fonts: ^2.1.0
我在 main.dart 中连接了 api 密钥和令牌。此连接方法请参阅 pub.dev。
主要.dart
import 'package:flutter/material.dart';
import 'package:movie_app_2021/utils/text.dart';
import 'package:movie_app_2021/widgets/toprated.dart';
import 'package:movie_app_2021/widgets/trending.dart';
import 'package:movie_app_2021/widgets/tv.dart';
import 'package:tmdb_api/tmdb_api.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Home(),
debugShowCheckedModeBanner: false,
theme: ThemeData(brightness: Brightness.dark, primaryColor: Colors.green),
);
}
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
List trendingmovies = [];
List topratedmovies = [];
List tv = [];
final String apiKey = '6bdd6f36cb39f19fc91894a86183a8bd';
final readAccessToken = 'eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiI2YmRkNmYzNmNiMzlmMTlmYzkxODk0YTg2MTgzYThiZCIsInN1YiI6IjYxNGJjY2JmZDJjMGMxMDA0NTNkOTk4MSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.1gDUXeVLFMdf092GNdmo3fORzVUOSy03n5p6iKAFftI';
@override
void initState(){
loadMovies();
super.initState();
}
loadMovies() async{
TMDB tmdbWithCustomLogs = TMDB(ApiKeys(apiKey, readAccessToken),
logConfig: ConfigLogger(
showLogs: true,
showErrorLogs: true,
));
Map trendingresult = await tmdbWithCustomLogs.v3.trending.getTrending();
Map topratedresult = await tmdbWithCustomLogs.v3.movies.getTopRated();
Map tvresult = await tmdbWithCustomLogs.v3.tv.getPouplar();
setState(() {
trendingmovies = trendingresult['results'];
topratedmovies = topratedresult['results'];
tv = tvresult['results'];
});
print(tv);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
appBar: AppBar(
backgroundColor: Colors.transparent,
title: ModifiedText(text: 'Flutter Movie App'),
),
body: ListView(
children: [
TopratedMovies(toprated: topratedmovies,),
TrandingMovies(trending: trendingmovies),
TV(tv: tv),
],
),
);
}
}
ModifiedText
是一个只将文本输出到 googleFont 的类。
trending
,是从 tmdb_api 获取的值toprated
。tv
import 'package:flutter/material.dart';
import 'package:movie_app_2021/utils/text.dart';
import '../description/description.dart';
class TrandingMovies extends StatelessWidget {
final List? trending;
const TrandingMovies({Key? key, this.trending}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ModifiedText(
text: 'Trending Movies',
size: 26,
),
SizedBox(
height: 10,
),
Container(
height: 270,
child: ListView.builder(
itemCount: trending!.length,
scrollDirection: Axis.horizontal,
itemBuilder: (context, index) {
return InkWell(
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context)=>Description(
name: trending![index]['title'],
bannerurl: 'http://image.tmdb.org/t/p/w500'+trending![index]['backdrop_path'],
posterurl: 'http://image.tmdb.org/t/p/w500'+trending![index]['poster_path'],
description: trending![index]['overview'],
vote: trending![index]['vote_average'].toString(),
lanch_on: trending![index]['release_date'],
)));
},
child: trending![index]['title']!=null?Container(
width: 140,
child: Column(
children: [
Container(
height: 200,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
'http://image.tmdb.org/t/p/w500'+trending![index]['poster_path']
),
),
),
),
Container(
child: ModifiedText(text: trending![index]['title']!=null?
trending![index]['title']:'Loding',),
),
],
),
):Container(),
);
},
),
),
],
),
);
}
}
错误
错误:无法以可靠的 null 安全性运行,因为以下依赖项不支持 null 安全性:
- 包:tmdb_api
我以良好的零安全性对其进行了编码。上周五,它工作正常,但今天发生错误。自更新进行以来,有什么需要更改的吗?