Смещение против выравнивания во флаттере
Хотя я знаю их использование и свойства, но иногда мне было трудно определить разницу между Offset
а также Alignment
так как оба они представляют точку в x-axis
а также y-axis
2 ответа
Для других: Согласно https://api.flutter.dev/flutter/painting/Alignment-class.html, уравнение для выравнивания по смещению:
offsetX = alignmentX * width/2 + width/2
offsetY = alignmentY * height/2 + height/2
Итак, используя некоторую алгебру, пойти другим путем и преобразовать смещение в выравнивание:
alignmentX = (offsetX - width/2)/(width/2)
alignmentY = (offsetY - height/2)/(height/2)
Где ширина и высота — это ширина/высота родителя, на котором основано смещение (например, окно/экран, если используются глобальные координаты)
Смещение использует координаты для местоположения объекта. С другой стороны, выравнивание по-прежнему использует координаты, но родительские виджеты используются в качестве основы для координат.