Flutter宝可梦API数据获取插件pokeapi的使用

Flutter宝可梦API数据获取插件pokeapi的使用

pokeapi-dart

pokeapi-dart 是一个用Dart编写的Poke API的封装库。支持PokeAPI v2。

目录

Documentation

完整的API文档可以在Poke API找到。

Getting Started

要使用此插件,在你的 pubspec.yaml 文件中添加 pokeapi 依赖:

import 'package:pokeapi/pokeapi.dart';

Endpoints

Berries

获取浆果列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<Berry>(1, 1);

获取单个浆果

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<Berry>(1);

Contests

获取比赛类型列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<ContestType>(1, 1);

获取单个比赛类型

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<ContestType>(1);

Encounters

获取遭遇方法列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<EncounterMethod>(1, 1);

获取单个遭遇方法

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<EncounterMethod>(1);

Evolution

获取进化链列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<EvolutionChain>(1, 1);

获取单个进化链

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<EvolutionChain>(1);

Games

获取世代列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<Generation>(1, 1);

获取单个世代

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<Generation>(1);

Items

获取物品列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<Item>(1, 1);

获取单个物品

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<Item>(1);

Locations

获取地点列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<Location>(1, 1);

获取单个地点

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<Location>(1);

Machines

获取机器列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<Machine>(1, 1);

获取单个机器

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<Machine>(1);

Moves

获取招式列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<Move>(1, 1);

获取单个招式

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<Move>(1);

Pokemon

获取所有宝可梦列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<Pokemon>(1, 1);

获取单个宝可梦

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<Pokemon>(1);

Utility

获取语言列表

必须传递偏移量和限制作为整数(例如1, 1)。

var response = PokeAPI.getObjectList<Language>(1, 1);

获取单个语言

必须传递ID作为整数(例如1)。

var response = PokeAPI.getObject<Language>(1);

更多关于Flutter宝可梦API数据获取插件pokeapi的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter宝可梦API数据获取插件pokeapi的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个使用Flutter和pokeapi获取宝可梦数据的示例代码。这个示例将展示如何使用HTTP请求从pokeapi获取宝可梦数据,并在Flutter应用中显示。

首先,确保你的Flutter项目已经创建。然后,你需要添加http依赖到你的pubspec.yaml文件中:

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.3  # 确保使用最新版本

然后运行flutter pub get来获取依赖。

接下来,创建一个新的Dart文件,例如pokemon_service.dart,用于处理与pokeapi的通信:

import 'dart:convert';
import 'package:http/http.dart' as http;

class PokemonService {
  final String apiUrl = 'https://pokeapi.co/api/v2/pokemon/';

  Future<dynamic> getPokemon(int id) async {
    final response = await http.get(Uri.parse('$apiUrl$id'));

    if (response.statusCode == 200) {
      return jsonDecode(response.body);
    } else {
      throw Exception('Failed to load pokemon');
    }
  }
}

然后,在你的主Dart文件(例如main.dart)中,使用上述服务来获取并显示宝可梦数据:

import 'package:flutter/material.dart';
import 'package:your_app_name/pokemon_service.dart';  // 替换为你的项目名

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter PokeAPI Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: PokemonDetails(pokemonId: 1),  // 例如,显示编号为1的宝可梦(妙蛙种子)
    );
  }
}

class PokemonDetails extends StatefulWidget {
  final int pokemonId;

  PokemonDetails({required this.pokemonId});

  @override
  _PokemonDetailsState createState() => _PokemonDetailsState();
}

class _PokemonDetailsState extends State<PokemonDetails> {
  late PokemonService _pokemonService;
  late Future<dynamic> _futurePokemon;

  @override
  void initState() {
    super.initState();
    _pokemonService = PokemonService();
    _futurePokemon = _pokemonService.getPokemon(widget.pokemonId);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Pokémon Details'),
      ),
      body: FutureBuilder<dynamic>(
        future: _futurePokemon,
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            if (snapshot.hasError) {
              return Center(
                child: Text('Error: ${snapshot.error}'),
              );
            } else {
              Map<String, dynamic> data = snapshot.data! as Map<String, dynamic>;
              return Padding(
                padding: const EdgeInsets.all(16.0),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Text(
                      'Name: ${data['name']}',
                      style: TextStyle(fontSize: 24),
                    ),
                    SizedBox(height: 16),
                    Text(
                      'Types: ${data['types']!.map((type) => type['type']['name']).join(', ')}',
                      style: TextStyle(fontSize: 18),
                    ),
                    SizedBox(height: 16),
                    Image.network(data['sprites']['front_default']),
                  ],
                ),
              );
            }
          } else {
            return Center(
              child: CircularProgressIndicator(),
            );
          }
        },
      ),
    );
  }
}

在这个示例中,我们创建了一个PokemonService类来处理HTTP请求,然后在PokemonDetails小部件中使用FutureBuilder来异步获取并显示宝可梦数据。

请确保替换your_app_name为你的实际Flutter项目名。运行这个Flutter应用,你应该能够看到编号为1的宝可梦(妙蛙种子)的详细信息。你可以通过修改PokemonDetails小部件中的pokemonId参数来查看其他宝可梦的信息。

回到顶部