{"id":15008358,"url":"https://github.com/flyclops/tenor_flutter","last_synced_at":"2026-02-05T19:34:40.800Z","repository":{"id":257005809,"uuid":"851659429","full_name":"Flyclops/tenor_flutter","owner":"Flyclops","description":"An opinionated yet customizable Flutter package for searching and selecting from a list of GIFs/Stickers from the Tenor GIF search API.","archived":false,"fork":false,"pushed_at":"2024-12-04T18:00:13.000Z","size":4438,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T09:44:44.159Z","etag":null,"topics":["dart","dart-library","dartlang","flutter","gif","gif-picker","gifs","tenor"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Flyclops.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-03T13:51:08.000Z","updated_at":"2025-02-07T23:58:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"a6ebdf0d-43bc-4d56-ab9c-b56f8855e269","html_url":"https://github.com/Flyclops/tenor_flutter","commit_stats":null,"previous_names":["flyclops/tenor_flutter"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flyclops%2Ftenor_flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flyclops%2Ftenor_flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flyclops%2Ftenor_flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flyclops%2Ftenor_flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Flyclops","download_url":"https://codeload.github.com/Flyclops/tenor_flutter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276096,"owners_count":20912287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","dart-library","dartlang","flutter","gif","gif-picker","gifs","tenor"],"created_at":"2024-09-24T19:17:48.588Z","updated_at":"2026-02-05T19:34:40.794Z","avatar_url":"https://github.com/Flyclops.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚠️ DISCONTINUED ⚠️\nDue to [Google shutting down the Tenor API](https://support.google.com/tenor/answer/10455265#whatll-happen-to-the-tenor-api\u0026zippy=%2Cwhatll-happen-to-the-tenor-api), we will be discontinuing development of this package. If a security issue comes up between now and June 2026 we will do our best to address it. [Please open an issue](https://github.com/Flyclops/tenor_flutter/issues/new/choose) if you find anything.\n\nConsider [GIPHY](https://pub.dev/packages/giphy_get) or [KLIPY](https://pub.dev/packages/klipy_flutter) as an alternative. Please do your research beforehand as neither is actually free.\n\n# Tenor Flutter\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pub.dartlang.org/packages/tenor_flutter\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/tenor_flutter.svg\" alt=\"Tenor Flutter Pub Package\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Flyclops/tenor_flutter/actions/workflows/main.yml\"\u003e\u003cimg src=\"https://github.com/flyclops/tenor_flutter/actions/workflows/main.yml/badge.svg\" alt=\"Build Status\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://coveralls.io/github/Flyclops/tenor_flutter?branch=main\"\u003e\u003cimg src=\"https://coveralls.io/repos/github/Flyclops/tenor_flutter/badge.svg?branch=main\" alt=\"Coverage Status\" /\u003e\u003c/a\u003e\n \u003ca href=\"https://github.com/flyclops/tenor_flutter/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/flyclops/tenor_flutter?style=flat\" alt=\"Tenor Dart Stars\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Flyclops/tenor_flutter/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-BSD_3--Clause-blue.svg\" alt=\"License BSD 3-Clause\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThis package integrates [Tenor GIF search](https://tenor.com/) into [Flutter](https://flutter.dev/) by utilizing the [tenor_dart](https://pub.dev/packages/tenor_dart) package to communicate directly with the [Tenor API V2](https://developers.google.com/tenor/guides/quickstart) via [http](https://pub.dev/packages/http).\n\nThe package currently provides an opinionated yet customizable UI experience for searching and selecting from a list of GIFs/Stickers from the Tenor GIF search API.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/flyclops/tenor_flutter/raw/main/example/assets/demo.gif\" width=\"200\" alt=\"Tenor Flutter Demo\"/\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003e\u003csup\u003eShow some ❤️ and \u003ca href=\"https://github.com/flyclops/tenor_flutter\"\u003estar the repo\u003c/a\u003e to support this package.\u003c/sup\u003e\u003c/strong\u003e\u003c/p\u003e\n\n## What to know\n\n- In order to start using Tenor Flutter you must obtain an API key by registering your project with [Tenor](https://developers.google.com/tenor/guides/quickstart).\n- Tenor requires proper [attribution](https://developers.google.com/tenor/guides/attribution) for projects using their API. This package enables \"Powered By Tenor\" and \"Search Tenor\" by default. You are only required to have one.\n\n## Obtaining Tenor API v2 key\n\n1. Log in to the [Google Cloud Console](https://console.cloud.google.com)\n2. Create a [new project](https://console.cloud.google.com/projectcreate)\n3. Go to the Google Cloud Marketplace and find the [Tenor API](https://console.cloud.google.com/marketplace/product/google/tenor.googleapis.com)\n4. Click `Enable` to activate it\n5. In the navigation menu, go to the `APIs \u0026 Services` tab and select [Credentials](https://console.cloud.google.com/apis/credentials)\n6. Click `+ Create Credentials` and choose `API key`\n7. Copy the generated API key\n8. Provide this API key as a parameter to `Tenor(apiKey: 'YOUR_API_KEY')`\n\n## Usage\n\n### Installation\n\n```\nflutter pub add tenor_flutter\n```\n\n\u003csup\u003eHaving trouble? Read the pub.dev \u003ca href=\"https://pub.dev/packages/tenor_flutter/install\"\u003einstallation page\u003c/a\u003e.\u003c/sup\u003e\n\n### Import\n\nImport the package into the dart file where it will be used:\n\n```\nimport 'package:tenor_flutter/tenor_flutter.dart';\n```\n\n### Initialize\n\nYou must pass in a valid `apiKey` provided by [Tenor](https://developers.google.com/tenor/guides/quickstart). It's **strongly recommended** to also pass in a `clientKey` as this will help you distinguish which project is making the requests.\n\n```\nfinal tenorClient = Tenor(apiKey: 'YOUR_API_KEY', clientKey: 'YOUR_PROJECT_NAME');\n```\n\n## Example\n\nFor more elaborate examples feel free to check out [example/lib/main.dart](https://github.com/Flyclops/tenor_flutter/blob/main/example/lib/main.dart).\n\nHere's how to display the UI as a bottom sheet and then print the user's selection. If `null` is returned, it means the user closed the sheet without choosing a GIF.\n\n```\nfinal tenorClient = Tenor(apiKey: 'YOUR_API_KEY', clientKey: 'YOUR_PROJECT_NAME');\nfinal TenorResult? result = await tenorClient.showAsBottomSheet(context: context);\nprint(result?.media.tinyGif?.url);\n```\n\n## Don't need the UI?\n\nIf you're seeking a solution that allows for full customization without the need of dependencies then consider [Tenor Dart](https://github.com/Flyclops/tenor_dart).\n\n## Sponsors\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cp align=\"center\"\u003e\u003ca href=\"https://flyclops.com/\"\u003e\u003cimg src=\"https://github.com/Flyclops/tenor_flutter/blob/main/example/assets/flyclops_logo_github.png?raw=true\" alt=\"Flyclops\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cp align=\"center\"\u003e\u003ca href=\"https://flyclops.com/games/domino.html\"\u003e\u003cimg src=\"https://github.com/Flyclops/tenor_flutter/blob/main/example/assets/domino_logo_github.png?raw=true\" alt=\"Domino!\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cp align=\"center\"\u003e\u003ca href=\"https://flyclops.com/\"\u003eFlyclops\u003c/a\u003e is a independent mobile games studio specializing in casual multi-player games, both asynchronous turn-based, and real-time. Flyclops’s games have been played by millions across\u0026nbsp;the\u0026nbsp;globe.\u003c/p\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cp align=\"center\"\u003e\u003ca href=\"https://flyclops.com/games/domino.html\"\u003eDomino!\u003c/a\u003e is super addictive, fast-paced, multiplayer dominoes done right for \u003ca href=\"https://j.mp/domino_FREE\"\u003eiOS\u003c/a\u003e and \u003ca href=\"https://flycl.ps/domino_android\"\u003eAndroid\u003c/a\u003e. This easy-to-learn but impossible-to-master strategy game is beautifully designed and endlessly\u0026nbsp;entertaining!\u003c/p\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## What's next?\n\n- Documentation\n- Tests _([Contributions](https://github.com/Flyclops/tenor_flutter/blob/main/CONTRIBUTING.md) welcome)_ ^\\_^\n- Further improvements\n\n## Contributing\n\nIf you read this far then you are awesome! There are a multiple ways in which you can [contribute](https://github.com/Flyclops/tenor_flutter/blob/main/CONTRIBUTING.md):\n\n- Pick up any issue marked with \"[good first issue](https://github.com/flyclops/tenor_flutter/issues?q=is:open+is:issue+label:%22good+first+issue%22)\"\n- Propose any feature, enhancement\n- Report a bug\n- Fix a bug\n- Write and improve some documentation\n- Send in a Pull Request 🙏\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyclops%2Ftenor_flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflyclops%2Ftenor_flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyclops%2Ftenor_flutter/lists"}