I need to implement of such feature where Text or Any widget can be resized by user using a corner icons. I'm attaching a reference. Any help would be great.
I want to implement One Finger Rotate using the Icon.
I've tried implementing some similar features of few Android Sticker View library but I am not getting proper result. I've tried the Following code.
import 'package:flutter/material.dart';
import 'package:matrix4_transform/matrix4_transform.dart';
import 'dart:math';
import 'package:render_metrics/render_metrics.dart';
class DragRotate extends StatefulWidget {
DragRotate({Key key}) : super(key: key);
@override
_DragRotateState createState() => _DragRotateState();
}
class _DragRotateState extends State<DragRotate> {
Matrix4 matrixForObject = Matrix4.identity();
double centerx, centery;
RenderParametersManager renderManager = RenderParametersManager();
GlobalKey sdsd = new GlobalKey();
@override
Widget build(BuildContext context) {
return Container(
child: Container(
child: Stack(
children: [
Center(
child: Transform(
origin: Offset(100, 100),
transform: matrixForObject,
child: Container(
key: sdsd,
height: 200,
width: 200,
color: Colors.amber,
child: Stack(
children: [
RenderMetricsObject(
manager: renderManager,
id: "w1",
child: Container(
margin: EdgeInsets.all(10),
color: Colors.amberAccent,
),
),
Positioned(
top: 0,
right: 0,
child: GestureDetector(
onPanStart: (p) {
//// THIS IS USED TO GET THE CENTER X CORDINATE OF THE ROTATING OBJECT
centerx =
renderManager.getRenderData("w1").center.x;
//// THIS IS USED TO GET THE CENTER Y CORDINATE OF THE ROTATING OBJECT
centery =
renderManager.getRenderData("w1").center.y;
},
onPanUpdate: (s) {
double angel = atan2(
s.globalPosition.dy - centery,
s.globalPosition.dx - centerx) *
180 /
pi;
setState(() {
matrixForObject = Matrix4Transform()
.rotateByCenterDegrees(angel, Size(1, 1))
.matrix4;
});
},
child: Icon(Icons.rotate_90_degrees_ccw))),
],
),
),
),
),
],
),
),
);
}
}