{"id":14956406,"url":"https://github.com/surfstudio/surfgear","last_synced_at":"2025-04-12T22:19:52.554Z","repository":{"id":42469744,"uuid":"248490426","full_name":"surfstudio/SurfGear","owner":"surfstudio","description":"Gear for safe Surf in Flutter","archived":false,"fork":false,"pushed_at":"2024-07-11T10:15:42.000Z","size":174303,"stargazers_count":359,"open_issues_count":4,"forks_count":49,"subscribers_count":34,"default_branch":"main","last_synced_at":"2025-04-04T01:09:40.571Z","etag":null,"topics":["flutter","mobile","surf"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/surfstudio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-19T11:52:52.000Z","updated_at":"2025-02-17T14:53:25.000Z","dependencies_parsed_at":"2022-09-07T19:50:30.024Z","dependency_job_id":"49c51019-039d-47d4-8339-e2aa894c1e11","html_url":"https://github.com/surfstudio/SurfGear","commit_stats":{"total_commits":3303,"total_committers":48,"mean_commits":68.8125,"dds":0.7547683923705721,"last_synced_commit":"cebfb7ec530f6847b525db59cb659585f175612a"},"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surfstudio%2FSurfGear","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surfstudio%2FSurfGear/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surfstudio%2FSurfGear/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surfstudio%2FSurfGear/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/surfstudio","download_url":"https://codeload.github.com/surfstudio/SurfGear/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248638289,"owners_count":21137649,"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":["flutter","mobile","surf"],"created_at":"2024-09-24T13:12:59.482Z","updated_at":"2025-04-12T22:19:52.529Z","avatar_url":"https://github.com/surfstudio.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Surf Gear\n\n![SurfGear Cover](https://i.ibb.co/k6d07BK/logo-surf-gear.png)\n\u003e [!CAUTION]\n\u003e This repository is no longer supported. You can find our packages at our [pub.dev page](https://pub.dev/publishers/surf.ru/packages).\n\nA set of libraries and tools used by [Surf](https://surf.ru/) when developing with Flutter.\nAll these solutions are fully consistent with our level of quality, supported and developed by the team.\nThis repository is a showcase. All packages are in their own repositories, which you can find at the links.\n\nIn addition to the packages presented here, we use many of our own solutions, which you can also find in our space.\nHowever, they may be at various stages of development and support.\nAs soon as they meet the declared quality level, they will also be presented on this showcase.\n\n---\n\n#### `Surf Lint Rules`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/surf_lint_rules?logo=dart\u0026logoColor=white)](https://pub.dev/packages/surf_lint_rules/)\n[![Pub Likes](https://badgen.net/pub/likes/surf_lint_rules?label=pub%20likes)](https://pub.dev/packages/surf_lint_rules/score)\n[![Pub Points](https://badgen.net/pub/points/surf_lint_rules?label=pub%20points)](https://pub.dev/packages/surf_lint_rules/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/surf_lint_rules?label=pub%20popularity)](https://pub.dev/packages/surf_lint_rules/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/surf_lint_rules)](https://pub.dev/packages/surf_lint_rules/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/flutter-surf-lint-rules)](https://github.com/surfstudio/flutter-surf-lint-rules/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/flutter-surf-lint-rules)](https://github.com/surfstudio/flutter-surf-lint-rules/pulls)\n\n\nLint rules used in [Surf](https://surf.ru).\n\n[Learn More](https://github.com/surfstudio/flutter-surf-lint-rules)\n\n---\n\n#### `OTP autofill`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/otp_autofill?logo=dart\u0026logoColor=white)](https://pub.dev/packages/otp_autofill/)\n[![Pub Likes](https://badgen.net/pub/likes/otp_autofill?label=pub%20likes)](https://pub.dev/packages/otp_autofill/score)\n[![Pub Points](https://badgen.net/pub/points/otp_autofill?label=pub%20points)](https://pub.dev/packages/otp_autofill/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/otp_autofill?label=pub%20popularity)](https://pub.dev/packages/otp_autofill/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/otp_autofill)](https://pub.dev/packages/otp_autofill/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/flutter-otp-autofill)](https://github.com/surfstudio/flutter-otp-autofill/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/flutter-otp-autofill)](https://github.com/surfstudio/flutter-otp-autofill/pulls)\n\nThis plugin uses [SMS User Consent API](https://developers.google.com/identity/sms-retriever/user-consent/overview)\nand [SMS Retriever API](https://developers.google.com/identity/sms-retriever/overview) on Android. You could use\nautofill from another input by using OTPStrategy. (e.g. from push-notification).\n\n[Learn More](https://github.com/surfstudio/flutter-otp-autofill)\n\n---\n\n#### `Bottom Sheet`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/bottom_sheet?logo=dart\u0026logoColor=white)](https://pub.dev/packages/bottom_sheet/)\n[![Pub Likes](https://badgen.net/pub/likes/bottom_sheet?label=pub%20likes)](https://pub.dev/packages/bottom_sheet/score)\n[![Pub Points](https://badgen.net/pub/points/bottom_sheet?label=pub%20points)](https://pub.dev/packages/bottom_sheet/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/bottom_sheet?label=pub%20popularity)](https://pub.dev/packages/bottom_sheet/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/bottom_sheet)](https://pub.dev/packages/bottom_sheet/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/flutter-bottom-sheet)](https://github.com/surfstudio/flutter-bottom-sheet/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/flutter-bottom-sheet)](https://github.com/surfstudio/flutter-bottom-sheet/pulls)\n\n\nCustom bottom sheet widget, that can resize by drag and then scroll.\n\n[Learn More](https://github.com/surfstudio/flutter-bottom-sheet)\n\n---\n\n#### `Analytics`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/analytics?logo=dart\u0026logoColor=white)](https://pub.dev/packages/analytics/)\n[![Pub Likes](https://badgen.net/pub/likes/analytics?label=pub%20likes)](https://pub.dev/packages/analytics/score)\n[![Pub Points](https://badgen.net/pub/points/analytics?label=pub%20points)](https://pub.dev/packages/analytics/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/analytics?label=pub%20popularity)](https://pub.dev/packages/analytics/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/analytics)](https://pub.dev/packages/analytics/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/flutter-analytics)](https://github.com/surfstudio/flutter-analytics/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/flutter-analytics)](https://github.com/surfstudio/flutter-analytics/pulls)\n\nInterface for working with analytic services. The library is supposed to unify work with various analytic services.\n\n[View Source](https://github.com/surfstudio/flutter-analytics)\n\n---\n\n#### `Surf Logger`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/surf_logger?logo=dart\u0026logoColor=white)](https://pub.dev/packages/surf_logger/)\n[![Pub Likes](https://badgen.net/pub/likes/surf_logger?label=pub%20likes)](https://pub.dev/packages/surf_logger/score)\n[![Pub Points](https://badgen.net/pub/points/surf_logger?label=pub%20points)](https://pub.dev/packages/surf_logger/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/surf_logger?label=pub%20popularity)](https://pub.dev/packages/surf_logger/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/surf_logger)](https://pub.dev/packages/surf_logger/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/flutter-surf-logger)](https://github.com/surfstudio/flutter-surf-logger/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/flutter-surf-logger)](https://github.com/surfstudio/flutter-surf-logger/pulls)\n\nLogger for Dart \u0026 Flutter.\n\n[View Source](https://github.com/surfstudio/flutter-surf-logger)\n\n---\n\n#### `Swipe Refresh`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/swipe_refresh?logo=dart\u0026logoColor=white)](https://pub.dev/packages/swipe_refresh/)\n[![Pub Likes](https://badgen.net/pub/likes/swipe_refresh?label=pub%20likes)](https://pub.dev/packages/swipe_refresh/score)\n[![Pub Points](https://badgen.net/pub/points/swipe_refresh?label=pub%20points)](https://pub.dev/packages/swipe_refresh/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/swipe_refresh?label=pub%20popularity)](https://pub.dev/packages/swipe_refresh/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/swipe_refresh)](https://pub.dev/packages/swipe_refresh/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/flutter-swipe-refresh)](https://github.com/surfstudio/flutter-swipe-refresh/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/flutter-swipe-refresh)](https://github.com/surfstudio/flutter-swipe-refresh/pulls)\n\nWidget for refresh by swipe.\n\n[Learn More](https://github.com/surfstudio/flutter-swipe-refresh)\n\n---\n\n#### `Union State`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/union_state?logo=dart\u0026logoColor=white)](https://pub.dev/packages/union_state/)\n[![Pub Likes](https://badgen.net/pub/likes/union_state?label=pub%20likes)](https://pub.dev/packages/union_state/score)\n[![Pub Points](https://badgen.net/pub/points/union_state?label=pub%20points)](https://pub.dev/packages/union_state/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/union_state?label=pub%20popularity)](https://pub.dev/packages/union_state/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/union_state)](https://pub.dev/packages/union_state/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/flutter-union-state)](https://github.com/surfstudio/flutter-union-state/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/flutter-union-state)](https://github.com/surfstudio/flutter-union-state/pulls)\n\nA simple union with three states (loading, data, and error) based on sealed classes and ChangeNotifier. \nUsed for delivering data to the UI layer, for example, using the [Elementary library](https://pub.dev/packages/elementary).\n\n[Learn More](https://github.com/surfstudio/flutter-union-state)\n\n---\n\n#### `Widget Test Composer`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/surf_widget_test_composer?logo=dart\u0026logoColor=white)](https://pub.dev/packages/surf_widget_test_composer/)\n[![Pub Likes](https://badgen.net/pub/likes/surf_widget_test_composer?label=pub%20likes)](https://pub.dev/packages/surf_widget_test_composer/score)\n[![Pub Points](https://badgen.net/pub/points/surf_widget_test_composer?label=pub%20points)](https://pub.dev/packages/surf_widget_test_composer/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/surf_widget_test_composer?label=pub%20popularity)](https://pub.dev/packages/surf_widget_test_composer/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/surf_widget_test_composer)](https://pub.dev/packages/surf_widget_test_composer/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/flutter-surf-widget-test-composer)](https://github.com/surfstudio/flutter-surf-widget-test-composer/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/flutter-surf-widget-test-composer)](https://github.com/surfstudio/flutter-surf-widget-test-composer/pulls)\n\nThis package is designed to simplify widget and golden testing processes using [golden_toolkit](https://pub.dev/packages/golden_toolkit) package for Flutter applications.\n\n[Learn More](https://github.com/surfstudio/flutter-surf-widget-test-composer)\n\n---\n\n#### `Yandex Mapkit Lite`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/yandex_mapkit_lite?logo=dart\u0026logoColor=white)](https://pub.dev/packages/yandex_mapkit_lite/)\n[![Pub Likes](https://badgen.net/pub/likes/yandex_mapkit_lite?label=pub%20likes)](https://pub.dev/packages/yandex_mapkit_lite/score)\n[![Pub Points](https://badgen.net/pub/points/yandex_mapkit_lite?label=pub%20points)](https://pub.dev/packages/yandex_mapkit_lite/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/yandex_mapkit_lite?label=pub%20popularity)](https://pub.dev/packages/yandex_mapkit_lite/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/yandex_mapkit_lite)](https://pub.dev/packages/yandex_mapkit_lite/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/yandex-mapkit-lite-flutter)](https://github.com/surfstudio/yandex-mapkit-lite-flutter/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/yandex-mapkit-lite-flutter)](https://github.com/surfstudio/yandex-mapkit-lite-flutter/pulls)\n\nFork of [yandex_mapkit](https://pub.dev/packages/yandex_mapkit) library, but lightweight and more appropriate for the majority of the apps.\n\n[Learn More](https://github.com/surfstudio/yandex-mapkit-lite-flutter)\n\n---\n\n#### `Faded Text`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/faded_text?logo=dart\u0026logoColor=white)](https://pub.dev/packages/faded_text/)\n[![Pub Likes](https://badgen.net/pub/likes/faded_text?label=pub%20likes)](https://pub.dev/packages/faded_text/score)\n[![Pub Points](https://badgen.net/pub/points/faded_text?label=pub%20points)](https://pub.dev/packages/faded_text/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/faded_text?label=pub%20popularity)](https://pub.dev/packages/faded_text/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/faded_text)](https://pub.dev/packages/faded_text/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/surf-flutter-faded-text)](https://github.com/surfstudio/surf-flutter-faded-text/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/surf-flutter-faded-text)](https://github.com/surfstudio/surf-flutter-faded-text/pulls)\n\nThis package provides a left to right fade effect for multiline text.\n\n[Learn More](https://github.com/surfstudio/surf-flutter-faded-text)\n\n---\n\n#### `Surf DCM Presets`\n\n\u003e [![Pub Version](https://img.shields.io/pub/v/surf_dcm_presets?logo=dart\u0026logoColor=white)](https://pub.dev/packages/surf_dcm_presets/)\n[![Pub Likes](https://badgen.net/pub/likes/surf_dcm_presets?label=pub%20likes)](https://pub.dev/packages/surf_dcm_presets/score)\n[![Pub Points](https://badgen.net/pub/points/surf_dcm_presets?label=pub%20points)](https://pub.dev/packages/surf_dcm_presets/score)\n[![Pub Popularity](https://badgen.net/pub/popularity/surf_dcm_presets?label=pub%20popularity)](https://pub.dev/packages/surf_dcm_presets/score)\n[![Flutter Platform](https://badgen.net/pub/flutter-platform/surf_dcm_presets)](https://pub.dev/packages/surf_dcm_presets/)\n\u003e\n\u003e [![GitHub issues](https://img.shields.io/github/issues/surfstudio/surf-dcm-presets)](https://github.com/surfstudio/surf-dcm-presets/issues?q=is%3Aissue+is%3Aopen)\n\u003e [![GitHub pull request](https://img.shields.io/github/issues-pr/surfstudio/surf-dcm-presets)](https://github.com/surfstudio/surf-dcm-presets/pulls)\n\nThis repository contains a list of pre-set presets for DCM that are used on Surf projects.\n\n[Learn More](https://github.com/surfstudio/surf-dcm-presets)\n\n\n## How to ask questions?\n\nYou can ask questions of interest either in the Release, or in the Discussion in the repository of the package to which\nthe question relates, or in a special [chat in Telegram](https://t.me/SurfGear).\n\n## Issues\n\nTo report your issues, file directly in the Issues section.\n\nhttps://github.com/surfstudio/SurfGear/issues/new\n\n## Contribute\n\nIf you would like to contribute to the package (e.g. by improving the documentation, fixing a bug or adding a cool new\nfeature), please read our [contribution guide](./CONTRIBUTING.md) first and send us your pull request.\n\nYour PRs are always welcome.\n\n## Thanks\n\nMany thanks to the entire **Surf team** for their contribution to the development of the repository!\n\n## License\n\n```text\nCopyright (c) 2019-present, SurfStudio LLC  \n\nLicensed under the Apache License, Version 2.0 (the \"License\");  \nyou may not use this file except in compliance with the License.  \nYou may obtain a copy of the License at  \n\nhttp://www.apache.org/licenses/LICENSE-2.0  \n\nUnless required by applicable law or agreed to in writing, software  \ndistributed under the License is distributed on an \"AS IS\" BASIS,  \nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  \nSee the License for the specific language governing permissions and  \nlimitations under the License.  \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsurfstudio%2Fsurfgear","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsurfstudio%2Fsurfgear","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsurfstudio%2Fsurfgear/lists"}