В настоящее время я использую пакет matrix_gesture_detector для масштабирования, преобразования и поворота виджета Transform
.
Все работает хорошо, но для улучшения UX я бы хотел привязать виджет к На 90, 180, 270 или 360 градусов после того, как пользователь повернет виджет достаточно близко к указанным углам.
Редактировать: Чтобы уточнить, я бы хотел, чтобы пользователь мог свободно поворачивать виджет, но привязываться к ближайшим 90 вращение градусов в пределах того квадранта, в котором оно находится, когда оно подойдет достаточно близко. Следовательно, решение должно обнаружить эту «близость» и затем действовать соответственно. Пожалуйста, перейдите по этой ссылке, чтобы увидеть GIF, который показывает желаемый эффект
Как мне этого добиться?
Ниже приведен фрагмент кода
Widget transformContainer() {
Matrix4 matrix;
GlobalKey matrixDetectorKey = GlobalKey();
return MatrixGestureDetector(
key: matrixDetectorKey,
onMatrixUpdate: (m, tm, sm, rm) {
setState(() {
matrix = MatrixGestureDetector.compose(matrix, tm, sm, rm);
});
},
child: Transform(
transform: matrix,
child: Container(
padding: EdgeInsets.all(24.0),
width: 100.0,
height: 200.0,
color: Colors.teal,
),
),
);}