Во время моих попыток ответить на этот вопрос я попытался поменять местами TextField с обычным текстом ...
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SafeArea(
child: Scaffold(
body: Container(
color: Colors.orange,
child: IntrinsicHeight(
child: Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Container(
color: Colors.grey,
child: Text("1st element"),
),
AspectRatio(
aspectRatio: 1,
child: Container(
color: Colors.green,
),
),
],
),
),
)),
),
);
}
}
... это работало прекрасно! К вашему сведению: я научился делать IntrinsicHeight из комментария к github .
Вот моя неудачная попытка @ попытка получить аналогичный результат с TextField ...
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
TextEditingController _controller;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SafeArea(
child: Scaffold(
body: Container(
color: Colors.orange,
child: IntrinsicHeight(
child: Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Expanded(
flex: 1,
child: TextField(
controller: _controller,
decoration: new InputDecoration(
border: InputBorder.none, hintText: "???"),
),
),
AspectRatio(
aspectRatio: 1,
child: Container(
color: Colors.green,
),
),
],
),
),
)),
),
);
}
}
Если вы запустите 2 программы, вы обнаружите, что высота оранжевого контейнера первого изменится с изменением масштаба шрифта, а у последнего - нет.
Что можно сделать, чтобы заставить их вести себя одинаково?