0

我正在使用 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 获取的值topratedtv

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

我以良好的零安全性对其进行了编码。上周五,它工作正常,但今天发生错误。自更新进行以来,有什么需要更改的吗?

4

1 回答 1

0

在此处输入图像描述

在 Run -> Edit configuration 中,键入以上内容以解决问题。

但颤振推荐零安全。如果您知道任何其他解决方法,请告诉我

于 2021-09-27T02:26:49.920 回答