flutter_dough
This package provides some widgets you can use to create a smooshy UI.
如何使用
此包提供了开箱即用的弹力小部件。您还可以选择创建自定义的 Dough 小部件以获得自定义弹力效果。有关如何使用 Dough 库的更完整概述,请查看 GitHub 上提供的示例项目。
可按压的 Dough
将任何小部件包装在 PressableDough 中,使其根据用户的输入手势而产生弹力效果。
PressableDough(
child: FloatingActionButton( ... ),
);
您可以在 此处 找到使用此小部件的完整示例。

可拖动的 Dough
与 Flutter 内置的 Draggable 小部件类似,DraggableDough 允许您拖放小部件……这次是弹力效果的!
DraggableDough<String>(
data: 'My data',
child: Container( ... ),
feedback: Container( ... ),
);
您可以在 此处 找到使用此小部件的完整示例。

陀螺仪 Dough
将任何小部件包装在 GyroDough 中,使其根据用户在物理空间中移动手机的方式而产生弹力效果。此小部件仅在具有加速度计/陀螺仪功能的设备上运行。
GyroDough(
child: Container( ... ),
);
您可以在 此处 找到使用此小部件的完整示例。

制作您自己的 Dough
如果以上小部件不完全符合您的要求,您可以使用提供的 Dough 小部件轻松创建自己的弹力小部件!请参阅 示例项目 了解更多关于如何操作的详细信息。

自定义 Dough 的手感
如果您不喜欢默认的 dough 设置,可以轻松更改 dough 的手感。只需将任何使用 Dough 的小部件包装在 DoughRecipe 中即可。
DoughRecipe(
data: DoughRecipeData(
adhesion: 4,
viscosity: 250, // a more jello like substance
usePerspectiveWarp: true, // use for added jiggly-ness
perspectiveWarpDepth: 0.02,
exitDuration: Duration(milliseconds: 600),
...
),
child: PressableDough( ... ),
);
您可以在 此处 找到使用此小部件的完整示例。

未来改进
Dough 扩展 – 理想情况下,按压 dough 小部件应该会将像素从您的手指推开,就像您在按压 dough 一样(可能使用网格?)。如果您有任何实现此功能的想法,请考虑贡献!
更多 dough 小部件 – 未来将添加更多开箱即用的 dough 小部件。一些 dough 小部件的设想包括……
- [ ] ReorderableListDough – 与可重排列表小部件相同,但它是软糯的。
- [ ] SliverListDough – 与 Sliver 列表小部件相同,但它是软糯的。