{"id":26382867,"url":"https://github.com/minikin/popover","last_synced_at":"2025-05-16T08:04:41.043Z","repository":{"id":37595857,"uuid":"324531923","full_name":"minikin/popover","owner":"minikin","description":"Popover for Flutter. A popover is a transient view that appears above other content onscreen when you tap a control or in an area.","archived":false,"fork":false,"pushed_at":"2025-01-05T09:58:23.000Z","size":3389,"stargazers_count":174,"open_issues_count":15,"forks_count":58,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-10T03:02:35.697Z","etag":null,"topics":["android","dart","flutter","ios","ipados","linux","macos","modal-dialog","popover","pub","webapp","widget","windows"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/popover","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/minikin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":null},"created_at":"2020-12-26T10:32:37.000Z","updated_at":"2025-04-22T08:40:01.000Z","dependencies_parsed_at":"2025-03-17T06:19:22.636Z","dependency_job_id":"be9a878d-393c-46e8-9588-9398f1f5a11b","html_url":"https://github.com/minikin/popover","commit_stats":{"total_commits":125,"total_committers":9,"mean_commits":13.88888888888889,"dds":0.128,"last_synced_commit":"fec20c77b3262e7f3f072a49071858cd1981db92"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minikin%2Fpopover","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minikin%2Fpopover/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minikin%2Fpopover/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minikin%2Fpopover/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/minikin","download_url":"https://codeload.github.com/minikin/popover/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254493378,"owners_count":22080126,"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":["android","dart","flutter","ios","ipados","linux","macos","modal-dialog","popover","pub","webapp","widget","windows"],"created_at":"2025-03-17T06:19:19.282Z","updated_at":"2025-05-16T08:04:36.033Z","avatar_url":"https://github.com/minikin.png","language":"Dart","readme":"\u003ch1 align=\"center\"\u003ePopover\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/minikin/popover/\"\u003e\n    \u003cimg src=\"https://i.ibb.co/0DW1XQ0/popover-demo.png\" alt=\"Popover screenshots\" /\u003e\n  \u003c/a\u003e\n\u003ch2 align=\"center\"\u003ePopover for Flutter\u003c/h2\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\n  \u003ca href=\"https://github.com/minikin/popover\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/platforms-iOS%20%7C%20macOS%20%7C%20Android%20%7C%20Linux%20%7C%20Windows%20%7C%20Web-green.svg\" alt=\"Supported platforms\" /\u003e\n  \u003c/a\u003e\n\n   \u003ca href=\"https://github.com/minikin/popover/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"Popover is released under the MIT license.\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/tenhobi/effective_dart\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/style-effective_dart-40c4ff.svg\" alt=\"Effective Dart\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/minikin/popover/blob/main/CODE_OF_CONDUCT.md\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\" alt=\"PRs welcome!\" /\u003e\n  \u003c/a\u003e\n\n  \u003c/br\u003e\n\n   \u003ca href=\"https://github.com/minikin/popover/actions\"\u003e\n    \u003cimg src=\"https://github.com/minikin/popover/workflows/On%20Pull%20Request/badge.svg\" alt=\"Current Build Status.\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://codecov.io/gh/minikin/popover\"\u003e\n    \u003cimg src=\"https://codecov.io/gh/minikin/popover/branch/main/graph/badge.svg?token=CHT3D24SOQ\"/\u003e\n  \u003c/a\u003e\n\n\u003c/p\u003e\n\n# Content\n\n- [Content](#content)\n  - [Features](#features)\n  - [Requirements](#requirements)\n  - [Install](#install)\n  - [Example](#example)\n  - [Support](#support)\n  - [License](#license)\n\n## Features\n\n\u003e A popover is a transient view that appears above other content onscreen when you tap a control or in an area. Typically, a popover includes an arrow pointing to the location from which it emerged. Popovers can be nonmodal or modal. A nonmodal popover is dismissed by tapping another part of the screen or a button on the popover. A modal popover is dismissed by tapping a Cancel or other button on the popover.\n\nSource: [Human Interface Guidelines.\n](https://developer.apple.com/design/human-interface-guidelines/ios/views/popovers/)\n\n## Requirements\n\n- Dart: 3.5.0+\n- Flutter: 3.24.0+\n\n## Install\n\n```yaml\ndependencies:\n  popover: ^0.3.1\n```\n\n## Example\n\nSee `example/lib/main.dart`.\n\n```dart\nimport 'package:flutter/material.dart';\nimport 'package:popover/popover.dart';\n\nclass PopoverExample extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      home: Scaffold(\n        appBar: AppBar(title: const Text('Popover Example')),\n        body: const SafeArea(\n          child: Padding(\n            padding: EdgeInsets.all(16),\n            child: Button(),\n          ),\n        ),\n      ),\n    );\n  }\n}\n\nclass Button extends StatelessWidget {\n  const Button({Key? key}) : super(key: key);\n\n  @override\n  Widget build(BuildContext context) {\n    return Container(\n      width: 80,\n      height: 40,\n      decoration: const BoxDecoration(\n        color: Colors.white,\n        borderRadius: BorderRadius.all(Radius.circular(5)),\n        boxShadow: [BoxShadow(color: Colors.black26, blurRadius: 5)],\n      ),\n      child: GestureDetector(\n        child: const Center(child: Text('Click Me')),\n        onTap: () {\n          showPopover(\n            context: context,\n            bodyBuilder: (context) =\u003e const ListItems(),\n            onPop: () =\u003e print('Popover was popped!'),\n            direction: PopoverDirection.bottom,\n            width: 200,\n            height: 400,\n            arrowHeight: 15,\n            arrowWidth: 30,\n          );\n        },\n      ),\n    );\n  }\n}\n\nclass ListItems extends StatelessWidget {\n  const ListItems({Key? key}) : super(key: key);\n\n  @override\n  Widget build(BuildContext context) {\n    return Padding(\n        padding: const EdgeInsets.symmetric(vertical: 8),\n        child: ListView(\n          padding: const EdgeInsets.all(8),\n          children: [\n            InkWell(\n              onTap: () {\n                Navigator.of(context)\n                  ..pop()\n                  ..push(\n                    MaterialPageRoute\u003cSecondRoute\u003e(\n                      builder: (context) =\u003e SecondRoute(),\n                    ),\n                  );\n              },\n              child: Container(\n                height: 50,\n                color: Colors.amber[100],\n                child: const Center(child: Text('Entry A')),\n              ),\n            ),\n            const Divider(),\n            Container(\n              height: 50,\n              color: Colors.amber[200],\n              child: const Center(child: Text('Entry B')),\n            ),\n            const Divider(),\n            Container(\n              height: 50,\n              color: Colors.amber[300],\n              child: const Center(child: Text('Entry C')),\n            ),\n          ],\n        ),\n    );\n  }\n}\n\nclass SecondRoute extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      appBar: AppBar(\n        title: const Text('Second Route'),\n        automaticallyImplyLeading: false,\n      ),\n      body: Center(\n        child: ElevatedButton(\n          onPressed: () =\u003e Navigator.pop(context),\n          child: const Text('Go back!'),\n        ),\n      ),\n    );\n  }\n}\n```\n\nTo see examples of the following package on a device or simulator:\n\n```sh\ncd example \u0026\u0026 flutter run\n```\n\n## Support\n\nPost issues and feature requests on the GitHub [issue tracker](https://github.com/minikin/popover/issues).\n\n## License\n\nThe source code of Popover project is available under the MIT license.\nSee the [LICENSE](https://github.com/minikin/popover/blob/main/LICENSE) file for more info.\n","funding_links":[],"categories":["Dart"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminikin%2Fpopover","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminikin%2Fpopover","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminikin%2Fpopover/lists"}