V
например, CustomSingleChildLayout, все знает о своих внешних размерах получаемых от родителя и может в рамках этого управлять размерами и позицией чайлда своего (который с 2мя стейтами)
Size: a a a
V
AZ
EC
EC
AZ
V
EC
EC
M
EC
V
V
EC
SM
ЕБ
body: Center(
child: Builder(builder: (context) {
var completer = Completer<bool>();
Image.memory(_photoData)
.image
.resolve(new ImageConfiguration())
.addListener(ImageStreamListener(
(info, sync) {
var image = info.image;
var media = MediaQuery.of(context).size;
completer.complete(
media.width < media.height && image.width > image.height);
},
));
return FutureBuilder(
future: completer.future,
builder: (context, snapshot) {
if (snapshot.hasData) {
if (snapshot.data == true) {
return RotatedBox(
quarterTurns: 1, child: Image.memory(_photoData));
} else {
return Image.memory(_photoData);
}
} else {
return Container();
}
});
}),
),
SM
body: Center(
child: Builder(builder: (context) {
var completer = Completer<bool>();
Image.memory(_photoData)
.image
.resolve(new ImageConfiguration())
.addListener(ImageStreamListener(
(info, sync) {
var image = info.image;
var media = MediaQuery.of(context).size;
completer.complete(
media.width < media.height && image.width > image.height);
},
));
return FutureBuilder(
future: completer.future,
builder: (context, snapshot) {
if (snapshot.hasData) {
if (snapshot.data == true) {
return RotatedBox(
quarterTurns: 1, child: Image.memory(_photoData));
} else {
return Image.memory(_photoData);
}
} else {
return Container();
}
});
}),
),
V
SS
ЕБ
S