8000 GitHub - prathanbomb/pokedart
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

prathanbomb/pokedart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pokeapi-dart

Wrapper for Poke API, written in Dart. Supports PokeAPI v2.

Documentation

Full API documentation can be found at Poke API.

Getting Started

To use this plugin, add pokeapi as a dependency in your pubspec.yaml file.

import 'package:pokeapi/pokeapi.dart';

Features

Main API Functions

  • Get Object by ID: Fetch individual resources by their ID

    var pokemon = await PokeAPI.getObject<Pokemon>(1); // Get Bulbasaur
  • Get Object by Name: Fetch resources by their name (more convenient than ID in many cases)

    var pokemon = await PokeAPI.getObjectByName<Pokemon>("bulbasaur");
  • Get List of Objects: Fetch paginated lists of complete objects

    var pokemonList = await PokeAPI.getObjectList<Pokemon>(1, 10); // Get first 10 Pokemon
  • Get Common List: Fetch basic information (name and URL) for resources

    var basicPokemonList = await PokeAPI.getCommonList<Pokemon>(1, 20);

Caching System

  • Configurable Caching: Control how data is cached

    // Use default cache settings (4 hour expiry)
    PokeAPI.configureCaching(CacheConfig.defaultConfig);
    
    // Disable caching
    PokeAPI.configureCaching(CacheConfig.noCache);
    
    // Long-term caching (30 days)
    PokeAPI.configureCaching(CacheConfig.longTerm);
    
    // Short-term caching (30 minutes)
    PokeAPI.configureCaching(CacheConfig.shortTerm);
    
    // Custom cache configuration
    PokeAPI.configureCaching(CacheConfig(
      enabled: true,
      expiryDuration: Duration(hours: 12),
      maxMemoryCacheItems: 200,
      useWhenOffline: true,
    ));
  • Cache Management:

    // Clear all cached data
    await PokeAPI.clearCache();
    
    // Check if an item exists in cache
    bool isCached = await PokeAPI.isInCache('cache_key');

Connectivity Features

  • Offline Support: Automatically use cached data when offline (configurable)
  • Connectivity Detection: Built-in connectivity checking to handle offline scenarios

Endpoints

Berries

Berries

Get Berries

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Berry

Must pass an ID as Int as Int (e.g. 1).

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

Get Berry by Name

Must pass a name as String (e.g. "chesto").

var response = PokeAPI.getObjectByName<Berry>("chesto");
Berry Firmness

Get Berry Firmnesses

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Berry Firmness

Must pass an ID as Int as Int (e.g. 1).

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

Get Berry Firmness by Name

Must pass a name as String (e.g. "very-soft").

var response = PokeAPI.getObjectByName<BerryFirmness>("very-soft");
Berry Flavors

Get Berry Flavors

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Berry Flavor

Must pass an ID as Int (e.g. 1).

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

Get Berry Flavor by Name

Must pass a name as String (e.g. "spicy").

var response = PokeAPI.getObjectByName<BerryFlavor>("spicy");

Contests

Contest Types

Get Contest Types

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Contest Type

Must pass an ID as Int (e.g. 1).

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

Get Contest Type by Name

Must pass a name as String (e.g. "cool").

var response = PokeAPI.getObjectByName<ContestType>("cool");
Contest Effects

Get Contest Effects

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Contest Effect

Must pass an ID as Int (e.g. 1).

var response = PokeAPI.getObject<ContestEffect>(1);
Super Contest Effects

Get Super Contest Effects

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Super Contest Effect

Must pass an ID as Int (e.g. 1).

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

Encounters

Encounter Methods

Get Encounter Methods

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Encounter Method

Must pass an ID as Int (e.g. 1).

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

Get Encounter Method by Name

Must pass a name as String (e.g. "walk").

var response = PokeAPI.getObjectByName<EncounterMethod>("walk");
Encounter Conditions

Get Encounter Conditions

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Encounter Condition

Must pass an ID as Int (e.g. 1).

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

Get Encounter Condition by Name

Must pass a name as String (e.g. "swarm").

var response = PokeAPI.getObjectByName<EncounterCondition>("swarm");
Encounter Condition Values

Get Encounter Condition Values

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Encounter Condition Value

Must pass an ID as Int (e.g. 1).

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

Get Encounter Condition Value by Name

Must pass a name as String (e.g. "swarm-yes").

var response = PokeAPI.getObjectByName<EncounterConditionValue>("swarm-yes");

Evolution

Evolution Chains

Get Evolution Chains

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Evolution Chain

Must pass an ID as Int (e.g. 1).

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

Evolution Chain Support Features

  • Full support for all evolution pattern types:
    • Linear evolutions (e.g., Bulbasaur → Ivysaur → Venusaur)
    • Branching evolutions (e.g., Eevee → Vaporeon/Jolteon/Flareon/etc.)
    • Multi-path evolutions (e.g., Wurmple → Cascoon/Silcoon → Dustox/Beautifly)
    • Complex evolution requirements (stats, time of day, held items, etc.)
Evolution Triggers

Get Evolution Triggers

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Evolution Trigger

Must pass an ID as Int (e.g. 1).

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

Get Evolution Trigger by Name

Must pass a name as String (e.g. "level-up").

var response = PokeAPI.getObjectByName<EvolutionTrigger>("level-up");

Games

Generations

Get Generations

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Generation

Must pass an ID as Int (e.g. 1).

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

Get Generation by Name

Must pass a name as String (e.g. "generation-i").

var response = PokeAPI.getObjectByName<Generation>("generation-i");
Pokedex

Get All Pokedex

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Single Pokedex

Must pass an ID as Int (e.g. 1).

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

Get Pokedex by Name

Must pass a name as String (e.g. "national").

var response = PokeAPI.getObjectByName<Pokedex>("national");
Versions

Get Versions

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Version

Must pass an ID as Int (e.g. 1).

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

Get Version by Name

Must pass a name as String (e.g. "red").

var response = PokeAPI.getObjectByName<Version>("red");
Version Groups

Get Version Groups

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Version Group

Must pass an ID as Int (e.g. 1).

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

Get Version Group by Name

Must pass a name as String (e.g. "red-blue").

var response = PokeAPI.getObjectByName<VersionGroup>("red-blue");

Items

Items

Get Items

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Item

Must pass an ID as Int (e.g. 1).

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

Get Item by Name

Must pass a name as String (e.g. "master-ball").

var response = PokeAPI.getObjectByName<Item>("master-ball");
Item Attributes

Get Item Attributes

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Item Attribute

Must pass an ID as Int (e.g. 1).

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

Get Item Attribute by Name

Must pass a name as String (e.g. "countable").

var response = PokeAPI.getObjectByName<ItemAbility>("countable");
Item Categories

Get Item Categories

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Item Category

Must pass an ID as Int (e.g. 1).

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

Get Item Category by Name

Must pass a name as String (e.g. "stat-boosts").

var response = PokeAPI.getObjectByName<ItemCategory>("stat-boosts");
Item Fling Effects

Get Item Fling Effects

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Item Fling Effect

Must pass an ID as Int (e.g. 1).

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

Get Item Fling Effect by Name

Must pass a name as String (e.g. "badly-poison").

var response = PokeAPI.getObjectByName<ItemFlingEffect>("badly-poison");
Item Pockets

Get Item Pockets

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Item Pocket

Must pass an ID as Int (e.g. 1).

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

Get Item Pocket by Name

Must pass a name as String (e.g. "misc").

var response = PokeAPI.getObjectByName<ItemPocket>("misc");

Locations

Locations

Get Locations

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Location

Must pass an ID as Int (e.g. 1).

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

Get Location by Name

Must pass a name as String (e.g. "canalave-city").

var response = PokeAPI.getObjectByName<Location>("canalave-city");
Location Areas

Get Location Areas

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Location Area

Must pass an ID as Int (e.g. 1).

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

Get Location Area by Name

Must pass a name as String (e.g. "canalave-city-area").

var response = PokeAPI.getObjectByName<LocationArea>("canalave-city-area");
Pal Park Areas

Get Pal Park Areas

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Pal Park Area

Must pass an ID as Int (e.g. 1).

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

Get Pal Park Area by Name

Must pass a name as String (e.g. "forest").

var response = PokeAPI.getObjectByName<PalParkArea>("forest");
Regions

Get Regions

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Region

Must pass an ID as Int (e.g. 1).

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

Get Region by Name

Must pass a name as String (e.g. "kanto").

var response = PokeAPI.getObjectByName<Region>("kanto");

Machines

Machines

Get Machines

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Machine

Must pass an ID as Int (e.g. 1).

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

Moves

Moves

Get Moves

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Move

Must pass an ID as Int (e.g. 1).

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

Get Move by Name

Must pass a name as String (e.g. "pound").

var response = PokeAPI.getObjectByName<Move>("pound");
Move Ailments

Get Move Ailments

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Move Ailment

Must pass an ID as Int (e.g. 1).

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

Get Move Ailment by Name

Must pass a name as String (e.g. "paralysis").

var response = PokeAPI.getObjectByName<MoveAilment>("paralysis");
Move Battle Styles

Get Move Battle Styles

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Move Battle Style

Must pass an ID as Int (e.g. 1).

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

Get Move Battle Style by Name

Must pass a name as String (e.g. "attack").

var response = PokeAPI.getObjectByName<MoveBattleStyle>("attack");
Move Categories

Get Move Categories

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Move Category

Must pass an ID as Int (e.g. 1).

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

Get Move Category by Name

Must pass a name as String (e.g. "damage").

var response = PokeAPI.getObjectByName<MoveCategory>("damage");
Move Damage Classes

Get Move Damage Classes

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Move Damage Class

Must pass an ID as Int (e.g. 1).

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

Get Move Damage Class by Name

Must pass a name as String (e.g. "status").

var response = PokeAPI.getObjectByName<MoveDamageClass>("status");
Move Learn Methods

Get Move Learn Methods

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Move Learn Method

Must pass an ID as Int (e.g. 1).

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

Get Move Learn Method by Name

Must pass a name as String (e.g. "level-up").

var response = PokeAPI.getObjectByName<MoveLearnMethod>("level-up");
Move Targets

Get Move Targets

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Move Target

Must pass an ID as Int (e.g. 1).

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

Get Move Target by Name

Must pass a name as String (e.g. "selected-pokemon").

var response = PokeAPI.getObjectByName<MoveTarget>("selected-pokemon");

Pokemon

Abilities

Get Abilities

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Ability

Must pass an ID as Int (e.g. 1).

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

Get Ability by Name

Must pass a name as String (e.g. "stench").

var response = PokeAPI.getObjectByName<Ability>("stench");
Characteristics

Get Characteristics

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Characteristic

Must pass an ID as Int (e.g. 1).

var response = PokeAPI.getObject<Characteristic>(1);
Egg Groups

Get Egg Groups

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Egg Group

Must pass an ID as Int (e.g. 1).

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

Get Egg Group by Name

Must pass a name as String (e.g. "monster").

var response = PokeAPI.getObjectByName<EggGroup>("monster");
Genders

Get Genders

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Gender

Must pass an ID as Int (e.g. 1).

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

Get Gender by Name

Must pass a name as String (e.g. "female").

var response = PokeAPI.getObjectByName<Gender>("female");
Growth Rates

Get Growth Rates

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Growth Rate

Must pass an ID as Int (e.g. 1).

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

Get Growth Rate by Name

Must pass a name as String (e.g. "slow").

var response = PokeAPI.getObjectByName<GrowthRate>("slow");
Natures

Get Natures

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Nature

Must pass an ID as Int (e.g. 1).

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

Get Nature by Name

Must pass a name as String (e.g. "hardy").

var response = PokeAPI.getObjectByName<Nature>("hardy");
Pokeathlon Stats

Get Pokeathlon Stats

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Pokeathlon Stat

Must pass an ID as Int (e.g. 1).

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

Get Pokeathlon Stat by Name

Must pass a name as String (e.g. "speed").

var response = PokeAPI.getObjectByName<PokeAthlonStat>("speed");
Pokemon

Get All Pokemon

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Single Pokemon

Must pass an ID as Int (e.g. 1).

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

Get Pokemon by Name

Must pass a name as String (e.g. "bulbasaur").

var response = PokeAPI.getObjectByName<Pokemon>("bulbasaur");

Get Basic Pokemon List

For performance, you can get just names and URLs:

var basicList = PokeAPI.getCommonList<Pokemon>(1, 20);
Pokemon Colors

Get Pokemon Colors

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Pokemon Color

Must pass an ID as Int (e.g. 1).

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

Get Pokemon Color by Name

Must pass a name as String (e.g. "black").

var response = PokeAPI.getObjectByName<PokemonColor>("black");
Pokemon Forms

Get Pokemon Forms

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Pokemon Form

Must pass an ID as Int (e.g. 1).

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

Get Pokemon Form by Name

Must pass a name as String (e.g. "bulbasaur").

var response = PokeAPI.getObjectByName<PokemonForm>("bulbasaur");
Pokemon Habitats

Get Pokemon Habitats

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Pokemon Habitat

Must pass an ID as Int (e.g. 1).

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

Get Pokemon Habitat by Name

Must pass a name as String (e.g. "cave").

var response = PokeAPI.getObjectByName<PokemonHabitat>("cave");
Pokemon Shapes

Get Pokemon Shapes

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Pokemon Shape

Must pass an ID as Int (e.g. 1).

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

Get Pokemon Shape by Name

Must pass a name as String (e.g. "ball").

var response = PokeAPI.getObjectByName<PokemonShape>("ball");
Pokemon Species

Get All Pokemon Species

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Single Pokemon Species

Must pass an ID as Int (e.g. 1).

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

Get Pokemon Species by Name

Must pass a name as String (e.g. "bulbasaur").

var response = PokeAPI.getObjectByName<PokemonSpecie>("bulbasaur");
Stats

Get Stats

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Stat

Must pass an ID as Int (e.g. 1).

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

Get Stat by Name

Must pass a name as String (e.g. "hp").

var response = PokeAPI.getObjectByName<Stat>("hp");
Types

Get Types

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Type

Must pass an ID as Int (e.g. 1).

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

Get Type by Name

Must pass a name as String (e.g. "normal").

var response = PokeAPI.getObjectByName<Type>("normal");

Utility

Languages

Get Languages

Must pass an offset and limit as Int (e.g. 1, 1).

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

Get Language

Must pass an ID as Int (e.g. 1).

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

Get Language by Name

Must pass a name as String (e.g. "en").

var response = PokeAPI.getObjectByName<Language>("en");

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages

0