Repository: flutter
Issue: Allow fixed Co-ordinate system for Alignment in Align and AnimatedAlign
Labels: c: new feature,framework,c: proposal,P3,team-framework,triaged-framework

### Is there an existing issue for this?

- [X] I have searched the [existing issues](https://github.com/flutter/flutter/issues)
- [X] I have read the [guide to filing a bug](https://flutter.dev/docs/resources/bug-reports)

### Use case

`Align` currently aligns two sets of coordinates between two widgets. In the X coordinate, it aligns the point given eg. (0.3) on the parent widget and on the child widget. That is, it finds the point at (0.3) in the child widget, and aligns that point with the point  (0.3) in the parent widget. And the same for Y. This is useful because it allows or aligning the corners of the child widget to the parent widget very well. For example, (-1, -1) aligns the point (-1,-1) in the child to the point ( -1, -1) in the parent, placing the widget itself in the bottom left. From the Docs: 

>The [alignment](https://api.flutter.dev/flutter/widgets/Align/alignment.html) property describes a point in the child's coordinate system and a different point in the coordinate system of this widget. The [Align](https://api.flutter.dev/flutter/widgets/Align-class.html) widget positions the child such that both points are lined up on top of each other.

But the lack of a "fixed" coordinate system, however, becomes frustrating when trying to position the child widget anywhere but the corners. Since there is no way to know what the given "center" or reference point is being used to align the child widget, there is no way to, for example, `Align` the leftmost corner of the Child to the middle of the Parent, even if the widths of the child and parent are known.

Consider the following image:

![Screenshot 2023-05-08 114840](https://user-images.githubusercontent.com/92773903/236870132-966909da-932b-4e30-9e79-045b828e8dab.png)

The parent has width: 100 and the text has width: 50. To align leftmost corner of child to the bottom middle of the parent, we need to do `alignment: Alignment(1, -1)`. That is, we need to tell it to go all the way to the right. Now consider the following image: 

![Screenshot 2023-05-08 115546](https://user-images.githubusercontent.com/92773903/236871438-5aa82dc7-37bd-4df0-a903-f830a60cc6bc.png)

Now the text has width: 40. How do we align this? I used `Alignment(0.7, -1)`, through some trial and error, but this isn't accurate, and obviously wouldn't work for any dynamic content.

Note that this is only an issue because the child reference point is continually changing. If it was set at any fixed number we could find the offset and use that to find the necessary coordinate. For example if the child's reference point was (0,0), we could still align the (-1,-1) of the child to (0,-1) of the parent by accounting for this offset.

### Proposal

Provide an optional `referencePoint` argument for `Align` and `AnimatedAlign.`  The reference point, if given, becomes the point that child will align with the parent. For example:

```
Container(
    height: 120.0,
    width: 120.0,
    color: Colors.blue[50],
    child: const Align(
      referencePoint: (-1,-1)
      alignment: Alignment(0, -1),
      child: Container(
        height: 60,
      ),
    ),
  ),
```
would align the bottom left(-1,-1) of the child to the bottom middle(0,-1) of the parent, which is currently impossible. This becomes all the more useful when dealing with `Align`ing multiple widgets next to each other, which is also basically impossible currently. If this is too cumbersome, a simple `staticReferencePoint` boolean argument would also be enough, with that point being (-1,-1) or (0,0). I am aware of `PositionedTransition ` and some other which may allow for this but they all to my knowledge require a layout at each frame because their size may change as well. So they are not good for my use case which may have up to 15 `AnimatedAlign`s in a single stack, so performance will be important here.