Во Flutter высота контейнера, существующего в Listview, должна быть максимальной - PullRequest
0 голосов
/ 23 марта 2020

В Flutter высота контейнера, существующего в Listview, должна быть максимальной.

Hello. Я собираюсь задать вам два вопроса о Flutter.

Первый вопрос - это то, что часть тела - это Listview, и в нем есть 2 контейнера. Высота «верхней области», существующей в верхней части, является фиксированной, а высота содержимого «TEST1» и «TEST2», существующих в нижней части, должна изменяться гибко.

Есть ли способ установить максимальную высоту содержимого внизу?

Например, если содержимое в нижней части меньше высоты устройства, содержимое должно располагаться посередине высоты устройства.

Кроме того, если содержимое нижней части превышает высоту устройства, оно должно быть прикреплено под частью «Верхняя область», и вы сможете проверить содержимое нижней части с помощью Listview.

Я пробовал различные методы, такие как «Гибкий» и «Расширенный», но я еще не решил его.

Второй вопрос касается переноса текста.

Если вы посмотрите на область 'Test2', текст 'it test contentsssss' превышает указанную ширину, поэтому последнее слово автоматически переносится и начинается со следующей строки.

Однако, если вы смотрите на область «Test1», корейское предложение «Это тестовое предложение»

Я пытался использовать TextAlign.justify, но это не сработало.

Есть ли способ решить это?

Буду признателен, если вы поможете мне с ответами.

Извините и спасибо за чтение длинного поста.

Ниже приведен захват и код Я написал.

образец изображения


class Testapp extends StatefulWidget {
  @override
  _TestappState createState() => _TestappState();
}

class _TestappState extends State<Testapp> {
  SharedPreferences _prefs;
  int _subjectcolor;
  int _verbcolor;
  String _directobjectcolor;
  String _inobjectcolor;
  String _nickname;
  MaterialColor wordColorMap;

  @override
  void initState() {
    super.initState();
    _loadColor();
  }

  //Color load function
  _loadColor() async {
    _prefs = await SharedPreferences.getInstance();
    setState(() {
      var mapColor = {
        '50': '0xffeceff1',
        '100': '0xffcfd8dc',
        '200': '0xffb0bec5',
        '300': '0xff90a4ae',
        '400': '0xff78909c',
        '500': '0xff607d8b',
        '600': '0xff546e7a',
        '700': '0xff455a64',
        '800': '0xff37474f',
        '900': '0xff263238',
      };

      _subjectcolor = (_prefs.getInt('subjectcolor') ?? 0xbb1674f6);
      _verbcolor = (_prefs.getInt('verbcolor') ?? 0xff1674f6);
      _directobjectcolor = (_prefs.getString('DirectObjectColor') ??
          'MaterialColor(primary value: Color(0xff263238))');
      // testcolor = _directobjectcolor;

      _inobjectcolor =
          (_prefs.getString('InDirectColor') ?? json.encode(mapColor));

      var color = int.parse(_directobjectcolor.split('(')[2].split(')')[0]);
      var mColorString = json.decode(_inobjectcolor);

      print(_inobjectcolor);

      Map<int, Color> mColor = {
        50: Color(int.parse(mColorString['50'])),
        100: Color(int.parse(mColorString['100'])),
        200: Color(int.parse(mColorString['200'])),
        300: Color(int.parse(mColorString['300'])),
        400: Color(int.parse(mColorString['400'])),
        500: Color(int.parse(mColorString['500'])),
        600: Color(int.parse(mColorString['600'])),
        700: Color(int.parse(mColorString['700'])),
        800: Color(int.parse(mColorString['800'])),
        900: Color(int.parse(mColorString['900'])),
      };

      wordColorMap = MaterialColor(color, mColor);
    });
  }

  @override
  Widget build(BuildContext context) {
    final Size size = MediaQuery.of(context).size;

    return Scaffold(
        appBar: inPageAppBar(context, 2),
        body: Column(
          children: <Widget>[
            Expanded(
              child: ListView(
                children: <Widget>[
                  Container(
                    padding: EdgeInsets.fromLTRB(0, 5, 0, 0),
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.start,
                      children: <Widget>[
                        Row(
                          mainAxisAlignment: MainAxisAlignment.center,
                          children: <Widget>[Text('top area')],
                        ),
                      ],
                    ),
                  ),
                  Container(
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      crossAxisAlignment: CrossAxisAlignment.stretch,
                      mainAxisSize: MainAxisSize.min,
                      children: <Widget>[
                        Container(
                          padding: EdgeInsets.fromLTRB(0, 10, 0, 20),
                          child: Center(
                            child: Column(
                              mainAxisAlignment: MainAxisAlignment.center,
                              children: <Widget>[
                                Container(
                                  child: Row(
                                    mainAxisAlignment: MainAxisAlignment.center,
                                    children: <Widget>[
                                      Container(
                                        width: 141,
                                        height: 58,
                                        margin: EdgeInsets.fromLTRB(
                                            size.width * 0.1,
                                            8,
                                            size.width * 0.05,
                                            0),
                                        padding:
                                            EdgeInsets.fromLTRB(10, 10, 10, 0),
                                        child: Center(
                                          child: Text(
                                            'TEST1',
                                            textScaleFactor: 1.0,
                                            textAlign: TextAlign.center,
                                            style: TextStyle(
                                                fontSize: 16,
                                                fontWeight: FontWeight.bold),
                                          ),
                                        ),
                                      ),
                                      Container(
                                        width: 141,
                                        height: 58,
                                        margin: EdgeInsets.fromLTRB(
                                            size.width * 0.05,
                                            8,
                                            size.width * 0.1,
                                            0),
                                        padding:
                                            EdgeInsets.fromLTRB(10, 10, 10, 0),
                                        child: Center(
                                          child: Text(
                                            'TEST2',
                                            textScaleFactor: 1.0,
                                            textAlign: TextAlign.center,
                                            style: TextStyle(
                                                fontSize: 16,
                                                fontWeight: FontWeight.bold),
                                          ),
                                        ),
                                      ),
                                    ],
                                  ),
                                ),
                                for (int i = 0; i < 3; i++)
                                  Column(
                                    mainAxisSize: MainAxisSize.max,
                                    mainAxisAlignment: MainAxisAlignment.center,
                                    children: <Widget>[
                                      IntrinsicHeight(
                                        child: Row(
                                            mainAxisAlignment:
                                                MainAxisAlignment.center,
                                            crossAxisAlignment:
                                                CrossAxisAlignment.stretch,
                                            children: <Widget>[
                                              Container(
                                                width: 141,
                                                margin: EdgeInsets.fromLTRB(
                                                    size.width * 0.1,
                                                    8,
                                                    size.width * 0.05,
                                                    8),
                                                padding: EdgeInsets.fromLTRB(
                                                    10, 10, 10, 10),
                                                decoration: BoxDecoration(
                                                    border: i == 0
                                                        ? Border.all(
                                                            color: Color(
                                                                _subjectcolor -
                                                                    3138811124),
                                                            width: 3)
                                                        : i == 1
                                                            ? Border.all(
                                                                color: Color(
                                                                    _verbcolor),
                                                                width: 3)
                                                            : i == 2
                                                                ? Border.all(
                                                                    color:
                                                                        wordColorMap[
                                                                            700],
                                                                    width: 3)
                                                                : Border.all(
                                                                    color: wordColorMap[700 -
                                                                        ((i - 2) *
                                                                            100)],
                                                                    width: 3),
                                                    borderRadius:
                                                        BorderRadius.all(Radius.circular(5)),
                                                    color: i == 0 ? Color(_subjectcolor) : i == 1 ? Color(_verbcolor) : i == 2 ? wordColorMap[700] : wordColorMap[700 - ((i - 2) * 100)]),
                                                child: Center(
                                                  child: Text(
                                                    '테스트 문장입니다다아아아',
                                                    softWrap: true,
                                                    textAlign:
                                                        TextAlign.justify,
                                                    textScaleFactor: 1.0,
                                                    style: TextStyle(
                                                        fontSize: 16,
                                                        height: 1.5,
                                                        color: Colors.white),
                                                  ),
                                                ),
                                              ),
                                              Container(
                                                width: 141,
                                                margin: EdgeInsets.fromLTRB(
                                                    size.width * 0.05,
                                                    8,
                                                    size.width * 0.1,
                                                    8),
                                                padding: EdgeInsets.fromLTRB(
                                                    10, 10, 10, 10),
                                                decoration: BoxDecoration(
                                                    border: i == 0
                                                        ? Border.all(
                                                            color: Color(
                                                                _subjectcolor -
                                                                    3138811124),
                                                            width: 3)
                                                        : i == 1
                                                            ? Border.all(
                                                                color: Color(
                                                                    _verbcolor),
                                                                width: 3)
                                                            : i == 2
                                                                ? Border.all(
                                                                    color:
                                                                        wordColorMap[
                                                                            700],
                                                                    width: 3)
                                                                : Border.all(
                                                                    color: wordColorMap[700 -
                                                                        ((i - 2) *
                                                                            100)],
                                                                    width: 3),
                                                    borderRadius:
                                                        BorderRadius.all(Radius.circular(5)),
                                                    color: i == 0 ? Color(_subjectcolor) : i == 1 ? Color(_verbcolor) : i == 2 ? wordColorMap[700] : wordColorMap[700 - ((i - 2) * 100)]),
                                                child: Center(
                                                  child: Text(
                                                    'it a test contentsssss',
                                                    textAlign: TextAlign.center,
                                                    textScaleFactor: 1.0,
                                                    style: TextStyle(
                                                        fontSize: 16,
                                                        height: 1.5,
                                                        locale:
                                                            Locale('ko', 'KR'),
                                                        color: Colors.white),
                                                  ),
                                                ),
                                              ),
                                            ]),
                                      ),
                                    ],
                                  ),
                              ],
                            ),
                          ),
                        ),
                      ],
                    ),
                  ),
                ],
              ),
            ),
          ],
        ));
  }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...