Flutter 如何使文本在颤振中响应?

Flutter 如何使文本在颤振中响应?,flutter,dart,Flutter,Dart,我正在努力使我的文本在我的应用程序中响应,我正在从Kotlin到Flatter写作 关键是我有一个文本小部件,它需要响应。当我在屏幕比例为16:9的手机上打开应用程序时,这很正常,但当我在屏幕比例为18:9的手机上打开应用程序时,文本不会填满剩余的空间 在科特林,我有一个带有指南的约束布局,这使得工作非常容易,但我不知道如何在颤振中完成 我使用的是AutoTextSize软件包,但它无法正常工作 在我的Kotlin应用程序中,它看起来像这样 在我的三星Note 9上,屏幕比例为18:9的Fla

我正在努力使我的文本在我的应用程序中响应,我正在从Kotlin到Flatter写作

关键是我有一个文本小部件,它需要响应。当我在屏幕比例为16:9的手机上打开应用程序时,这很正常,但当我在屏幕比例为18:9的手机上打开应用程序时,文本不会填满剩余的空间

在科特林,我有一个带有指南的约束布局,这使得工作非常容易,但我不知道如何在颤振中完成

我使用的是AutoTextSize软件包,但它无法正常工作

在我的Kotlin应用程序中,它看起来像这样

在我的三星Note 9上,屏幕比例为18:9的Flatter如下所示:

我的代码:

导入“包装:颤振/材料.省道”;
导入“package:auto_size_text/auto_size_text.dart”;
导入“../helpers/makdolan.dart”;
类GeneratedCouponScreen扩展了无状态小部件{
最终字符串耦合图像;
GeneratedCouponScreen({Key-Key,@required this.couponImage}):super(Key:Key);
@凌驾
小部件构建(构建上下文){
var_makdolan=makdolan();
var now=_makdolan.calculateDate();
返回脚手架(
背景颜色:Colors.white,
正文:安全区(
子:容器(
填充:所有边缘设置(16.0),
子:列(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
纵队(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
Text('DATA WYDANIA:',style:TextStyle(颜色:Colors.black,fontSize:16.0,fontwweight:fontwweight.bold)),
文本(现在,样式:TextStyle(颜色:Colors.black,fontSize:16.0))
],
),
纵队(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
Text('UNIKALNY KOD:',样式:TextStyle(颜色:Colors.black,fontSize:16.0,fontwweight:fontwweight.bold)),
文本(_makdolan.calculateUniqueCode(),样式:TextStyle(颜色:Colors.black,fontSize:16.0))
],
)
],
),
尺寸箱(高度:8.0),
Image.asset(耦合映像),
尺寸箱(高度:8.0),
AutoSizeText.rich(
TextSpan(
正文:“我们的产品是免费的。我们的产品是免费的。我们的产品是免费的。我们的产品是免费的瓦萨维·奥雷斯·波尔图·洛特尼泽戈·莱卡·瓦什·斯泽戈维·斯泽戈维·洛特尼泽戈·格达内斯·斯泽戈维·洛特尼奇·洛特尼奇·洛特尼奇·洛特尼奇·洛特尼奇·洛特尼泽戈·洛特尼奇·洛特尼奇·洛特尼奇是一位“奥皮尼亚·斯斯特罗尼”的管理者,
样式:TextStyle(颜色:Colors.black),
儿童:[
TextSpan(
文本:“www.mcdonalds.pl”,
样式:TextStyle(颜色:颜色(0xffffc300),装饰:textEdition.underline)
),
TextSpan(
文字:“w sekcji”,
样式:TextStyle(颜色:Colors.black)
),
TextSpan(
文本:“Regulamy”,
样式:TextStyle(颜色:颜色(0xffffc300),装饰:textEdition.underline)
)
]
),
maxLines:12,
),
垫片(),
卡片(
子:容器(
身高:95.0,
颜色:颜色(0xffffc300),
儿童:中心(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
Text('DRUKUJ/',样式:TextStyle(fontSize:28.0)),
文本('ZAPISZ JAKO PDF',样式:TextStyle(fontSize:28.0),)
],
),
)
),
),
卡片(
子:容器(
身高:95.0,
颜色:颜色(0xffffc300),
儿童:中心(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
Text('PRZEŚLIJ KUPON',样式:TextStyle(fontSize:28.0)),
文本(WYSYŁKA W CIĄGU 24 GODZIN),样式:TextStyle(fontSize:17.0)
],
),
)
),
)
],
),
),
)
);
}
}
您可以试试这个软件包。 这种方法基本上是基于屏幕宽度/高度/dpi获得一个比率。因此,您可以相应地调整任何UI元素(如fontsize)。因此,我们的想法是或多或少地匹配您原始测试设备(您有设计)上的字体大小,并使其适应其他分辨率

这个想法是基本方程式:

设计屏幕宽度->24pt(当前字体大小) Note9ScreenWidth->x(已调整note9的字体大小)

所以,这就是如何根据宽度、高度、屏幕PPI或其他任何因素来调整内容的任何比率。基本上,您将这些值视为比例,然后乘以标准化因子

currentFactor=currentValue/designedValue.
希望它能澄清一点“多分辨率感知”的概念。

您可以试试这个软件包。 这种方法基本上是基于屏幕宽度/高度/dpi获得一个比率。因此,您可以相应地调整任何UI元素(如fontsize)。因此,这个想法或多或少是为了匹配您原始测试设备(您有设计)上的字体大小,并使其适应
currentFactor=currentValue/designedValue.
.sp - for font size
Text('Sizer', style: TextStyle(fontSize: 12.0.sp))   //use SomeValue.sp in fonsize for responsive text
.h  - for widget height
.w  - for widget width
Container(
  height: 10.0.h,  //10% height of screen
  width: 80.0.w,   //80% width of screen
  child: Text('Sizer', style: TextStyle(fontSize: 12.0.sp)),
);