Как сделать так, чтобы высота контейнера соответствовала высоте TextField, если она содержится в строке? - PullRequest
0 голосов
/ 14 июня 2019

Во время моих попыток ответить на этот вопрос я попытался поменять местами 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 программы, вы обнаружите, что высота оранжевого контейнера первого изменится с изменением масштаба шрифта, а у последнего - нет.

Что можно сделать, чтобы заставить их вести себя одинаково?

...