我有一个容器,我需要在那里显示条形码,我希望条形码在屏幕上尽可能宽. 目前,我将字体大小设置为适合所有设备的合理大小,但这当然只是暂时的. 我怎么才能解决这个问题呢?这是我用来构建Widget的代码.

@override
Widget build(BuildContext context) {
  return Scaffold(
      appBar: AppBar(
      title: Text(_title),
    ),
    body: Container(
    padding: const EdgeInsets.all(12.0),
    child: Column(
      children: <Widget>[ 
        SizedBox(
          width: double.infinity,
          child: Text(_barcode, style: TextStyle(fontFamily: 'Code128', fontSize: 90.0))
        ),
        Text(_barcode, style: TextStyle(fontSize: 40.0))
        ]
      ),
    )
  );
}

推荐答案

我相信你要找的是FittedBox美元.

Boxfit适用于您想要拉伸/zoom 子以适合该框的任何"适合".它不会对文本执行纯粹的"拉伸",而是应该占用的空间.您不应该同时指定文本的大小.

它看起来像这样:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  MyAppState createState() {
    return new MyAppState();
  }
}

class MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Center(
            child: Container(
              color: Colors.blue,
              width: 300.0,
              height: 200.0,
              child: FittedBox(
                fit: BoxFit.contain,
                child: Text("Whee"),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

如果你想真正地"拉伸"文本(即使实际的字符更宽或更高),你必须做一些更为定制的事情.

如果是这样的话,看看CustomPaintCustomPainterTextPainterCanvastranslate&;scale个选项.基本上,您需要创建一个扩展CustomPainter的类,在这个类中,您创建了一个TextPainter,以特定的大小进行布局,将其绘制到画布上,然后将其zoom 以适合CustomPainter的实际大小(或者您先zoom 画布-我忘了…).然后将该类的一个实例传递给CustomPaint.

Flutter相关问答推荐

滚动时应用栏 colored颜色 更改Flutter

flutter:如何将字体大小设置得更大(更大)

为什么我需要等待重新访问Firestore数据库,即使它已经做了之前?

Flutter 中不存在URI的目标

更改BottomNavigationBar onTap?的大小

在Flutter 中创建自定义Snackbar类

我有一个问题:类型';()=>;Null';不是类型转换中类型';(Int)=>;void';的子类型

BoxConstraints强制使用无限宽度(列中的Listview)

任务';:app:check DebugDuplicateClasss';的Ffltter Share_plus抛出执行失败

如何在flutter中更改showModalBottomSheet小部件中CheckboxListTile小部件的值?

如何修改来自合并 list 的 Android list 权限?

文本溢出文本框 - Flutter

什么最接近 Dart 的 List.asMap().forEach() 返回列表?

在向 Google Route API 发送 HTTP Post 请求期间发生错误,

有什么办法可以消除Flutter 中的传递依赖?

alert 对话框内的 ListView 显示空的透明窗口

如何在 flutter 的alert 对话框中实现进度指示器?

Flutter Web App 未启动:脚本的 MIME 类型不受支持

解密 Modulr 安全令牌

将容器扩展到安全区域 - Flutter