【问题标题】:How to automatically scale a widget to fit different screen sizes?如何自动缩放小部件以适应不同的屏幕尺寸?
【发布时间】:2018-01-12 03:02:38
【问题描述】:

我有一个包含 ListTile 的卡片 ListView,在每个列表图块中我都有标题和副标题,我尝试在多部手机(android/ios)上调试我的应用程序。对于其中一些手机,字幕文本会溢出卡片小部件,因为它们的屏幕较小。有没有办法根据屏幕尺寸有效地适应我的文本小部件?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    问题是您正在使用 ListTile 来处理它们不适合的东西。

    根据 material.io 的说法,listTile最多有 3 行文本。 https://material.io/guidelines/components/lists.html#lists-usage

    改用适合内容的卡片。

    【讨论】:

      【解决方案2】:

      您可以将 maxLines 和溢出属性分配给 Text 小部件:

      import 'package:flutter/material.dart';
      
      void main() {
        runApp(new MyApp());
      }
      
      class MyApp extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return new MaterialApp(
            title: 'Flutter Demo',
            home: new MyHomePage(),
          );
        }
      }
      
      class MyHomePage extends StatefulWidget {
        @override
        _MyHomePageState createState() => new _MyHomePageState();
      }
      
      class _MyHomePageState extends State<MyHomePage> {
        static const String _longText = 'Lorem ipsum dolor sit amet, consectetur adip'
            'iscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna '
            'aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco labor'
            'is nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in rep'
            'rehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatu'
            'r. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui off'
            'icia deserunt mollit anim id est laborum.';
        @override
        Widget build(BuildContext context) {
          return new Scaffold(
            appBar: new AppBar(
              title: new Text('TestProject'),
            ),
            body: new Card(
                child: new ListTile(
              title: const Text('Title'),
              subtitle: const Text(
                _longText,
                maxLines: 2,
                overflow: TextOverflow.ellipsis,
              ),
            )),
          );
        }
      }
      

      【讨论】:

      • 但是无法根据屏幕大小动态调整小部件的大小,如果我希望显示整个文本怎么办?
      • 没有为这么长的内容设置 ListTile。如果你删除 maxLines 和溢出并添加 isThreeLine = true,你的卡片将显示 4 行字幕。如果你需要更多,你可以看看 ExpansionTile。
      • 顺便说一句,iPhone SE 上的文本无论如何都会溢出,即使设置溢出属性也是如此。
      • @ShadyAziza 缩放在 Flutter 上不好;您需要设置设备缩放器值并手动缩放所有内容..
      猜你喜欢
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多