Как я могу расширить свой контейнер согласно моей длине текста? - PullRequest
0 голосов
/ 12 марта 2020

Я создал один виджет под названием slidercarasol, в котором я сделал следующее:

 Widget slidercarasol = FutureBuilder(
        future: GetAlerts(device_id),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.data == null) {
            return SpinKitChasingDots(
              color: Colors.white,
              size: 50.0,
            );
          } else if (snapshot.data.length == 0) {
            return Container(
              height: 100,
              child: Center(
                  child: Text(
                'NO ALERTS AVAILABLE NOW',
                style: TextStyle(color: Colors.white, fontSize: 18),
              )),
            );
          } else {
            return new CarouselSlider(
              aspectRatio: 16 / 5,
              viewportFraction: 1.0,
              autoPlayInterval:  Duration(seconds: 20),
              onPageChanged: (index) {
                setState(() {
                  _current = index;
                });
              },
              autoPlay: true,
              pauseAutoPlayOnTouch: Duration(seconds: 10),
              items: <Widget>[
              for (var ind = 0; ind < snapshot.data.length; ind++)
                  GestureDetector(
                    child: Container(
                      child: Text(snapshot.data[ind].que,
                        softWrap: true,
                        style: TextStyle(
                          fontSize: 16,
                          color: Colors.white,
                        ),
                      ),
                    ),
                    onTap: () {},
                  ),
              ],
            );
          }
        });

, и я вызвал этот виджет в эшафот

  body: Container(
        color: Colors.black,
        height: MediaQuery.of(context).size.height,
        child: Container(
          height: double.infinity,
          child: ListView(
            shrinkWrap: true,
            scrollDirection: Axis.vertical,
            children: <Widget>[
              Card(
                color: Colors.black,
                semanticContainer: true,
                clipBehavior: Clip.antiAliasWithSaveLayer,
                child: Stack(

                  alignment: Alignment.topLeft,
                  children: <Widget>[

                    Container(

                      decoration: new BoxDecoration(
                        image: new DecorationImage(
                          image: new AssetImage("assets/slideralert.png",),
                          fit: BoxFit.fill,
                        ),
                        borderRadius: new BorderRadius.all(const Radius.circular(10.0)),
                      ),
                      //  color: Colors.black.withOpacity(0.5),
                      padding: const EdgeInsets.all(20.0),
                      child: Column(
                        mainAxisSize: MainAxisSize.min,
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Icon(
                            Icons.notifications,
                            color: Colors.white,
                          ),
                          SizedBox(
                            height: 10,
                          ),
                          slidercarasol
                        ],
                      ),
                    )
                  ],
                ),
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(20.0),
                ),
                elevation: 5,
                margin: EdgeInsets.only(right: 24.0, left: 24.0, top: 10.0),
              ),
             otherwidget,
            ],
          ),
        ),
      ),

enter image description here

и я получаю вывод, подобный этому, мне нужно, чтобы был показан полный текст, и высота контейнера будет увеличена, так как текст большой по длине. Я хочу отобразить полный текст в контейнере, если текст короткий, чем не проблема, но когда я получаю длинный текст, я не могу отобразить полный текст .. заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Попробуйте обернуть ваш слайдеркарасол с помощью Flexible.

                      child: Column(
                        mainAxisSize: MainAxisSize.min,
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Icon(
                            Icons.notifications,
                            color: Colors.white,
                          ),
                          SizedBox(
                            height: 10,
                          ),
                          Flexible(
                            fit: FlexFit.loose,
                            child: slidercarasol,
                          ),
                        ],
                      ),
0 голосов
/ 12 марта 2020
  1. Вы можете добавить свойства ограничений Контейнера и предоставить значение атрибуту maxHeight.

    например,

          GestureDetector(
                child: Container(
                  constraints : BoxConstraints(
                     maxHeight:1000,
                   ),
                  child: Text(snapshot.data[ind].que,
                    softWrap: true,
                    style: TextStyle(
                      fontSize: 16,
                      color: Colors.white,
                    ),
                  ),
                ),
                onTap: () {},
              ),
    
  2. Вы можете обернуть свой виджет слайдеркарасол в расширенный или гибкий виджет

например,

       Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Icon(
                    Icons.notifications,
                    color: Colors.white,
                  ),
                  SizedBox(
                    height: 10,
                  ),
                  Expanded(
                  child : slidercarasol,
                 )
                ],
              ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...