Порхание, несколько текстов внутри стека

#flutter #flutter-layout

Вопрос:

Я должен сделать несколько строк «hinttext:»

поэтому я использовал для этого «Стек».

         Container(
          height: 140,
          padding: EdgeInsets.only(left: 8 right: 8),
          child: Stack(
            children: [
              TextFormField(
                    ....
                    hintText: "hinttext1",
                   ),
              ),
              Expanded(
                child: Positioned(
                    top: 50,
                    left: 0,
                    child: Text(
                      "longhinttext2222222222222222222222222222222222222222",
                      style: TextStyle(
                        color: Colors.grey,
                      ),
                    )),
              ),
            ],
          ),
        )
 

Но «hintext2» усекается посередине, вместо того, чтобы создавать вторую строку.

—РЕДАКТИРОВАТЬ

Если hinttext2 обернут расширенным, создается вторая строка, но положение вверху: 50 игнорируется.

—ПРАВКА2

 ======== Exception caught by widgets library =======================================================
The following assertion was thrown while applying parent data.:
Incorrect use of ParentDataWidget.

The ParentDataWidget Positioned(left: 0.0, top: 50.0) wants to apply ParentData of type StackParentData to a RenderObject, which has been set up to accept ParentData of incompatible type FlexParentData.

Usually, this means that the Positioned widget has the wrong ancestor RenderObjectWidget. Typically, Positioned widgets are placed directly inside Stack widgets.
The offending Positioned is currently placed inside a Column widget.

The ownership chain for the RenderObject that received the incompatible parent data was:
  RichText ← Text ← Positioned ← Expanded ← Column ← Padding ← ConstrainedBox ← Padding ← Container ← Column ← ⋯
When the exception was thrown, this was the stack: 
#0      RenderObjectElement._updateParentData.<anonymous closure> (package:flutter/src/widgets/framework.dart:5723:11)
#1      RenderObjectElement._updateParentData (package:flutter/src/widgets/framework.dart:5739:6)
#2      RenderObjectElement.attachRenderObject (package:flutter/src/widgets/framework.dart:5761:7)
#3      RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5440:5)
#4      MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6228:11)
...
 

Ответ №1:

Вместо стека вы можете попробовать Column , потому что расширенные работают только под столбцом или строкой

 Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            TextFormField(

            ),
            Expanded(
              child: Text(
                "longhinttext2222222222222222222222222222222222222222",
                style: TextStyle(
                  color: Colors.grey,
                ),
              ),
            ),
          ],
        ),
 

выход
введите описание изображения здесь

Комментарии:

1. привет, но произошла ошибка. Я ввел код ошибки, пожалуйста, посмотрите. может ли он использовать расположенную внутри колонку??

2. просто удалите положение и оберните прокладкой и, пожалуйста, проверьте обновленный ответ

3. вау… это было так просто??? о мой.. то, что я сделал, так глупо… спасибо тебе

Ответ №2:

Попробуй это-

   Container(
      height: 140,
      padding: EdgeInsets.only(left: 8 right: 8),
      child: Stack(
        children: [
          TextFormField(
                ....
                hintText: "hinttext1",
               ),
          Positioned(
                top: 50,
                left: 0,
            child: Expanded(
                child: Text(
                  "longhinttext2222222222222222222222222222222222222222",
                  style: TextStyle(
                    color: Colors.grey,
                  ),
                )),
          ),
        ],
      ),
    )
 

Комментарии:

1. если мне это нравится, он игнорирует верхнюю позицию:50

2. Я отредактировал код, попробуйте это.

3. это то же самое, мой друг, взгляните на мой отредактированный вопрос