【问题标题】:Text widget softWrap not working in nested row-column-row in Flutter文本小部件 softWrap 在 Flutter 的嵌套行列行中不起作用
【发布时间】:2020-02-13 19:05:00
【问题描述】:

我正在尝试将文本“很棒的非常长的文本,理想情况下应该软变形”包含在打击代码中。尝试使用Flexible 和Expanded,没有奏效。

让softWrap 在嵌套的行列场景中工作变得越来越困难:(

import 'package:flutter/material.dart';
import 'package:sample/models/Reward.dart';

class RewardDetailsView extends StatelessWidget {
  final Reward _reward;

  RewardDetailsView(this._reward);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        elevation: 0,
      ),
      body: Container(
        child: SingleChildScrollView(
          padding: EdgeInsets.all(16.0),
          child: Column(
            children: <Widget>[
              Row(

                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Icon(Icons.wallpaper),
                  SizedBox(width: 16.0),
                  Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[

                      Text(
                        'Benefits',
                        style: TextStyle(
                          fontSize: 14.0,
                          fontWeight: FontWeight.w600,
                          color: Colors.grey[600],
                        ),
                      ),

                      Row(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Padding(
                            padding: const EdgeInsets.only(top: 4.0),
                            child: Icon(
                              Icons.arrow_right,
                              size: 10.0,
                            ),
                          ),
                          SizedBox(width: 8.0),
                          Text(
                            'Awesome somthing very long text which should ideally soft warp',
                            softWrap: true,
                          ),
                        ],
                      ),

                      Row(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Padding(
                            padding: const EdgeInsets.only(top: 4.0),
                            child: Icon(
                              Icons.arrow_right,
                              size: 10.0,
                            ),
                          ),
                          SizedBox(width: 8.0),
                          Text(
                            'Awesome somthing very long text which should ideally soft warp',
                            softWrap: true,
                          ),
                        ],
                      ),

                    ],
                  ),
                ],
              ),
            ],
          ),
        ),
      ),
    );
  }
}

下面是代码的输出。如果我在 Text 小部件周围添加灵活,它会从屏幕上消失。

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    您在小部件树中使用嵌套行。在这种情况下,用Expanded 小部件包装小部件将不起作用,因为如果父元素是Row 或Column 小部件,则框架无法为父元素布局宽度。

    这是基于您的示例的工作代码示例。

      class RewardDetailsView extends StatelessWidget {
      final dynamic _reward = 'asdfasdfsd';
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            elevation: 0,
          ),
          body: Container(
            child: SingleChildScrollView(
              padding: EdgeInsets.all(16.0),
              child: Column(
                children: <Widget>[
                  Row(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      Icon(Icons.wallpaper),
                      SizedBox(width: 16.0),
                      Expanded(  // Wrap this column inside an expanded widget so that framework allocates max width for this column inside this row
                          child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Text(
                            'Benefits',
                            style: TextStyle(
                              fontSize: 14.0,
                              fontWeight: FontWeight.w600,
                              color: Colors.grey[600],
                            ),
                          ),
                          Row(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: <Widget>[
                              Padding(
                                padding: const EdgeInsets.only(top: 4.0),
                                child: Icon(
                                  Icons.arrow_right,
                                  size: 10.0,
                                ),
                              ),
                              SizedBox(width: 8.0),
                              Expanded( // Then wrap your text widget with expanded
                                  child: Text(
                                    'Awesome somthing very long text which should ideally soft warp lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorm ipsum',
                                    softWrap: true,
                                  )),
                            ],
                          ),
                          Row(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: <Widget>[
                              Padding(
                                padding: const EdgeInsets.only(top: 4.0),
                                child: Icon(
                                  Icons.arrow_right,
                                  size: 10.0,
                                ),
                              ),
                              SizedBox(width: 8.0),
                              Text(
                                'Awesome somthing very long text which should ideally soft warp',
                                softWrap: true,
                              ),
                            ],
                          ),
                        ],
                      )),
                    ],
                  ),
                ],
              ),
            ),
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-10
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 2021-07-29
      • 1970-01-01
      • 2021-01-16
      • 2019-12-21
      相关资源
      最近更新 更多