2本指で回転 Two-finger Rotate
写真やスタンプを2本の指でひねると、その向きに回転する。指を広げれば同時に拡大もできる。
本物の Flutter ウィジェットが動きます(初回は数秒かかります)
どんなもの?
写真の編集やスタンプの配置、地図の向きを変えるときの操作です。
2本指の操作は GestureDetector の onScaleStart / onScaleUpdate にまとめて届き、
回転は details.rotation(ラジアン)、拡大は details.scale で受け取れます。
どちらも「指を置いたときから」の変化量なので、onScaleStart で今の角度を覚えておき、足し合わせます。
PC のマウスでは2本指を使えないので、ボタンやスライダーの回転手段も用意しておくと親切です。
こんなときに
- 写真・スタンプ・図形などを自由に置いて編集する画面
避けたい場面
- 回転させる意味がない物(うっかり回ると戻すのが面倒)
最小コード
GestureDetector(
onScaleStart: (_) {
baseAngle = angle;
baseScale = scale;
},
onScaleUpdate: (d) => setState(() {
angle = baseAngle + d.rotation; // ラジアン
scale = (baseScale * d.scale).clamp(0.5, 3.0);
}),
child: Transform.rotate(
angle: angle,
child: Transform.scale(scale: scale, child: sticker),
),
)使うウィジェット
GestureDetector(onScaleUpdate)ScaleUpdateDetails.rotationTransform.rotate