{"id":13789974,"url":"https://github.com/JackJonson/flutter_sliding_up_panel","last_synced_at":"2025-05-12T07:31:16.173Z","repository":{"id":56830201,"uuid":"209561234","full_name":"JackJonson/flutter_sliding_up_panel","owner":"JackJonson","description":"A sliding up panel widget.","archived":false,"fork":false,"pushed_at":"2024-03-27T06:07:08.000Z","size":2239,"stargazers_count":31,"open_issues_count":6,"forks_count":18,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-18T04:35:27.650Z","etag":null,"topics":["animationcontroller","elevation","flutter","flutter-package","panel","panel-widget","sliding-up-panel"],"latest_commit_sha":null,"homepage":null,"language":"Dart","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/JackJonson.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":"2019-09-19T13:28:02.000Z","updated_at":"2024-08-21T02:27:19.000Z","dependencies_parsed_at":"2024-06-20T22:08:50.456Z","dependency_job_id":null,"html_url":"https://github.com/JackJonson/flutter_sliding_up_panel","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JackJonson%2Fflutter_sliding_up_panel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JackJonson%2Fflutter_sliding_up_panel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JackJonson%2Fflutter_sliding_up_panel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JackJonson%2Fflutter_sliding_up_panel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JackJonson","download_url":"https://codeload.github.com/JackJonson/flutter_sliding_up_panel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253695086,"owners_count":21948811,"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":["animationcontroller","elevation","flutter","flutter-package","panel","panel-widget","sliding-up-panel"],"created_at":"2024-08-03T22:00:35.419Z","updated_at":"2025-05-12T07:31:15.365Z","avatar_url":"https://github.com/JackJonson.png","language":"Dart","funding_links":[],"categories":["Packages"],"sub_categories":[],"readme":"# flutter_sliding_up_panel\n\nA sliding up panel widget which can be used to show or hide content, beautiful and simple.\n\n\n## demo\n\n\u003cimg src=\"https://raw.githubusercontent.com/JackJonson/flutter_sliding_up_panel/master/screenshots/demo.gif\" width=\"50%\"\u003e\n\n\n## Getting Started\n\n## Null safety\n```yaml\ndependencies:\n  flutter_styled_toast: ^2.0.1\n```\n\n## Previous version\n```yaml\ndependencies:\n  flutter_sliding_up_panel: ^1.2.1\n```\n\n\n\n```dart\nimport 'package:flutter_sliding_up_panel/flutter_sliding_up_panel.dart';\n```\n\n```dart\nStack(\n  children: \u003cWidget\u003e[\n    Scaffold(\n      appBar: AppBar(\n        title: Text(widget.title),\n        actions: \u003cWidget\u003e[\n          IconButton(\n            icon: Icon(Icons.settings),\n            onPressed: () {\n              widget.onSetting?.call();\n            },\n          )\n        ],\n      ),\n      body: Container(\n        child:Center(\n          child:Text('This is content'),\n        ),\n      ),\n    ),\n    SlidingUpPanelWidget(\n      child: Container(\n        margin: EdgeInsets.symmetric(horizontal: 15.0),\n        decoration: ShapeDecoration(\n          color: Colors.white,\n          shadows: [BoxShadow(blurRadius: 5.0,spreadRadius: 2.0,color: const Color(0x11000000))],\n          shape: RoundedRectangleBorder(\n            borderRadius: BorderRadius.only(\n              topLeft: Radius.circular(10.0),\n              topRight: Radius.circular(10.0),\n            ),\n          ),\n        ),\n        child: Column(\n          children: \u003cWidget\u003e[\n            Container(\n              color: Colors.white,\n              alignment: Alignment.center,\n              height: 50.0,\n              child: Row(\n                children: \u003cWidget\u003e[\n                  Icon(Icons.menu,size: 30,),\n                  Padding(\n                    padding: EdgeInsets.only(left: 8.0,),\n                  ),\n                  Text(\n                    'click or drag',\n                  )\n                ],\n                mainAxisAlignment: MainAxisAlignment.center,\n              ),\n            ),\n            Divider(\n              height: 0.5,\n              color: Colors.grey[300],\n            ),\n            Flexible(\n              child: Container(\n                child: ListView.separated(\n                  controller: scrollController,\n                  physics: ClampingScrollPhysics(),\n                  itemBuilder: (context, index) {\n                    return ListTile(\n                      title: Text('list item $index'),\n                    );\n                  },\n                  separatorBuilder: (context, index) {\n                    return Divider(\n                      height: 0.5,\n                    );\n                  },\n                  shrinkWrap: true,\n                  itemCount: 20,\n                ),\n                color: Colors.white,\n              ),\n            ),\n          ],\n          mainAxisSize: MainAxisSize.min,\n        ),\n      ),\n      controlHeight: 50.0,\n      anchor: 0.4,\n      panelController: panelController,\n      onTap: (){\n         ///Customize the processing logic\n         if(SlidingUpPanelStatus.expanded==panelController.status){\n            panelController.collapse();\n         }else{\n            panelController.expand();\n         }\n      },  //Pass a onTap callback to customize the processing logic when user click control bar.\n      enableOnTap: true,//Enable the onTap callback for control bar.\n      dragDown: (details){\n         print('dragDown');\n      },\n      dragStart: (details){\n         print('dragStart');\n      },\n      dragCancel: (){\n         print('dragCancel');\n      },\n      dragUpdate: (details){\n         print('dragUpdate,${panelController.status==SlidingUpPanelStatus.dragging?'dragging':''}');\n      },\n      dragEnd: (details){\n         print('dragEnd');\n      },\n    ),\n  ],\n);\n```\n\n\n### SlidingUpPanelWidget param\n\nproperty            | description\n--------------------|----------------------------\nchild               | Widget (Not Null)(required) (Child widget)\ncontrolHeight       | double (Not Null)(required) (The height of the control bar which could be used to drag or click to control this panel)   \nanimationController | AnimationController  (The animation that controls the bottom sheet's position.)\npanelController     | SlidingUpPanelController (Not Null)(required) (The controller to control panel)\nonStatusChanged     | OnSlidingUpPanelStatusChanged  (Called when the this panel status changed)\nelevation           | double (default 8.0) (Elevation of the panel)  \npanelStatus         | SlidingUpPanelStatus (default SlidingUpPanelStatus.collapsed) (Panel status)  \nanchor              | double (default 0.5) (The fraction of anchor position, which is from 0 to 1.0)\nonTap               | VoidCallback (default is a build-in callback) (Void callback when click control bar)\nenableOnTap         | bool (Not Null)(default is true) (Enable or disable the tap callback for control bar) \ndragDown            | OnSlidingUpPanelDragDown (default is null) (Drag down listener) \ndragStart           | OnSlidingUpPanelDragStart (default is null) (Drag start listener) \ndragUpdate          | OnSlidingUpPanelDragUpdate (default is null) (Drag update listener) \ndragCancel          | OnSlidingUpPanelDragCancel (default is null) (Drag cancel listener) \ndragEnd             | OnSlidingUpPanelDragEnd (default is null) (Drag end listener) \n\n## Example\n[example](https://github.com/JackJonson/flutter_sliding_up_panel/blob/master/example/lib/main.dart)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJackJonson%2Fflutter_sliding_up_panel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJackJonson%2Fflutter_sliding_up_panel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJackJonson%2Fflutter_sliding_up_panel/lists"}