{"id":15293121,"url":"https://github.com/openflutter/flutter_gesture_password","last_synced_at":"2026-01-11T13:32:50.758Z","repository":{"id":56831159,"uuid":"132899160","full_name":"OpenFlutter/flutter_gesture_password","owner":"OpenFlutter","description":"flutter_gesture_password","archived":false,"fork":false,"pushed_at":"2024-10-15T01:58:58.000Z","size":828,"stargazers_count":80,"open_issues_count":3,"forks_count":14,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-19T12:12:41.092Z","etag":null,"topics":["dart","flutter","flutter-plugin"],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenFlutter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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":"2018-05-10T12:45:31.000Z","updated_at":"2025-04-25T03:05:49.000Z","dependencies_parsed_at":"2024-12-31T07:20:59.562Z","dependency_job_id":null,"html_url":"https://github.com/OpenFlutter/flutter_gesture_password","commit_stats":{"total_commits":18,"total_committers":4,"mean_commits":4.5,"dds":0.4444444444444444,"last_synced_commit":"eae8ef906e71f1893ea1dc6390befab136e3eab4"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OpenFlutter/flutter_gesture_password","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Fflutter_gesture_password","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Fflutter_gesture_password/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Fflutter_gesture_password/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Fflutter_gesture_password/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenFlutter","download_url":"https://codeload.github.com/OpenFlutter/flutter_gesture_password/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Fflutter_gesture_password/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263636795,"owners_count":23492305,"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","flutter","flutter-plugin"],"created_at":"2024-09-30T16:39:53.332Z","updated_at":"2025-11-17T03:35:55.531Z","avatar_url":"https://github.com/OpenFlutter.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gesture_password\n\n##### Flutter的手势密码\n\n## Getting Started\n\nFor help getting started with Flutter, view our online [documentation](https://flutter.io/).\n\nFor help on editing package code, view the [documentation](https://flutter.io/developing-packages/).\n![image](https://github.com/zhangruiyu/flutter_gesture_password/blob/master/wow.gif)\n\n## How to use ?\n\n1. Depend on it\n \n```yaml\ndependencies:\n  gesture_password: \"^0.0.4\"\n```\n\n2. Install it\n \n```sh\n$ flutter packages get\n```\n\n3. Import it\n\n```dart\nimport 'package:gesture_password/gesture_password.dart';\nimport 'package:gesture_password/mini_gesture_password.dart';\n```\n\n## 属性\n* width 控件宽度(xia-weiyang想法)\n* selectedColor 选中的颜色\n* normalColor:  没选中的颜色\n* lineStrokeWidth: 线宽\n* circleStrokeWidth: 选中外圈圆宽\n* smallCircleR: 小圆半径\n* bigCircleR: 大圆半径\n* focusDistance: 选中差值 越大越容易选中\n* successCallback 选择4个以上松手回调,返回值为选中的index相加的字符串\n* failCallback 选择4下以上松手回调\n* selectedCallback 经过任意一个后回调,返回值为选中的index相加的字符串\n\n## Example\n```dart\nimport 'package:flutter/material.dart';\nimport 'package:gesture_password/gesture_password.dart';\nimport 'package:gesture_password/mini_gesture_password.dart';\n\nvoid main() =\u003e runApp(new MyApp());\n\nclass MyApp extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return new MaterialApp(\n      title: 'Flutter Demo',\n      theme: new ThemeData(\n        primarySwatch: Colors.blue,\n      ),\n      home: new MyHomePage(title: 'Flutter Demo Home Page'),\n    );\n  }\n}\n\nclass MyHomePage extends StatefulWidget {\n  MyHomePage({Key key, this.title}) : super(key: key);\n\n  final String title;\n\n  @override\n  _MyHomePageState createState() =\u003e new _MyHomePageState();\n}\n\nclass _MyHomePageState extends State\u003cMyHomePage\u003e {\n  GlobalKey\u003cMiniGesturePasswordState\u003e miniGesturePassword =\n      new GlobalKey\u003cMiniGesturePasswordState\u003e();\n\n  GlobalKey\u003cScaffoldState\u003e scaffoldState = new GlobalKey\u003cScaffoldState\u003e();\n\n  @override\n  Widget build(BuildContext context) {\n    return new MaterialApp(\n      home: new Scaffold(\n        key: scaffoldState,\n        appBar: new AppBar(\n          title: new Text('Plugin example app'),\n        ),\n        body: new Column(\n          children: \u003cWidget\u003e[\n            new Center(\n                child: new MiniGesturePassword(key: miniGesturePassword)),\n            new LayoutBuilder(\n              builder: (BuildContext context, BoxConstraints constraints) {\n                return new Container(\n                  color: Colors.red,\n                  margin: const EdgeInsets.only(top: 100.0),\n                  child: new GesturePassword(\n                    successCallback: (s) {\n                      print(\"successCallback$s\");\n                      scaffoldState.currentState?.showSnackBar(new SnackBar(\n                          content: new Text('successCallback:$s')));\n                      miniGesturePassword.currentState?.setSelected('');\n                    },\n                    failCallback: () {\n                      print('failCallback');\n                      scaffoldState.currentState?.showSnackBar(\n                          new SnackBar(content: new Text('failCallback')));\n                      miniGesturePassword.currentState?.setSelected('');\n                    },\n                    selectedCallback: (str) {\n                      miniGesturePassword.currentState?.setSelected(str);\n                    },\n                  ),\n                );\n              },\n            ),\n          ],\n        ),\n      ),\n    );\n  }\n}\n```\n\n##### 有需求的话,后期再加入其他的吧\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenflutter%2Fflutter_gesture_password","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenflutter%2Fflutter_gesture_password","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenflutter%2Fflutter_gesture_password/lists"}