当前位置: 首页 > news >正文

阿里云的网站程序如何做长沙正规关键词优化价格从优

阿里云的网站程序如何做,长沙正规关键词优化价格从优,软考哪个培训机构通过率高,好看的页面布局文本不随系统设置而改变大小[四] 前言方案十九:使用LayoutBuilder和RichText方案二十:使用Transform.scale方案二十一:使用自定义文本缩放因子方案二十二:使用SingleChildScrollView方案二十三:使用FittedBox方案二十四…

文本不随系统设置而改变大小[四]

  • 前言
      • 方案十九:使用LayoutBuilder和RichText
      • 方案二十:使用Transform.scale
      • 方案二十一:使用自定义文本缩放因子
      • 方案二十二:使用SingleChildScrollView
      • 方案二十三:使用FittedBox
      • 方案二十四:使用Positioned
      • 方案二十五:使用IntrinsicHeight
      • 方案二十六:使用ConstrainedBox
      • 方案二十七:使用AspectRatio
      • 方案二十八:使用ListView
      • 总结


前言

请添加图片描述

在flutter 越来越来的平台适配中,最常见的一直场景就是,修改了设备的字体大小或者样式,从而导致整个APP 的适配变形等情况的出现,对于这种问题的解决方案,当然就是限制字体了,但是如果一概而论的话,又不太适合,毕竟产品可不管你方不方便的,这里我整理了绝大部分的场景使用方案


方案十九:使用LayoutBuilder和RichText

通过结合使用LayoutBuilderRichText,你可以手动计算文本的大小,并确保其不受系统字体大小变化的影响。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: LayoutBuilder(builder: (context, constraints) {return RichText(text: TextSpan(text: 'This text will not scale with system font size',style: TextStyle(fontSize: 16.0, // 设置一个基础的字体大小),),);},),),);}
}

在这个例子中,我们使用LayoutBuilder获取父容器的约束信息,并在RichText中使用TextSpan定义文本样式。通过手动计算文本的大小,确保文本不受系统字体大小变化的影响。

方案二十:使用Transform.scale

通过使用Transform.scale,你可以手动缩放文本以达到固定的大小,而不受系统字体大小变化的影响。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: Transform.scale(scale: 1.0, // 根据需要调整缩放比例child: Text('This text will not scale with system font size',style: TextStyle(fontSize: 16.0, // 设置一个基础的字体大小),),),),);}
}

在这个例子中,我们使用Transform.scale将文本手动缩放到所需大小,确保文本不受系统字体大小变化的影响。你可以根据需要调整缩放比例。

方案二十一:使用自定义文本缩放因子

通过自定义文本缩放因子,你可以在应用的全局范围内设置文本的大小,而不受系统字体大小变化的影响。这可以通过设置TextThemebodyText2textScaleFactor属性来实现。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(theme: ThemeData(textTheme: TextTheme(bodyText2: TextStyle(textScaleFactor: 1.0, // 设置一个基础的文本缩放因子),),),home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: Text('This text will not scale with system font size',),),);}
}

在这个例子中,我们在TextTheme中的bodyText2样式中设置了textScaleFactor属性,将其固定为1.0。这样,无论系统字体大小如何变化,应用中的文本都将保持相同的大小。

方案二十二:使用SingleChildScrollView

通过将文本包装在SingleChildScrollView中,你可以确保文本不会因为系统字体大小变化而溢出或缩放,而是可以滚动查看完整文本。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: SingleChildScrollView(scrollDirection: Axis.vertical,child: Text('This text will not scale with system font size',style: TextStyle(fontSize: 16.0, // 设置一个基础的字体大小),),),),);}
}

在这个例子中,我们将文本包装在SingleChildScrollView中,使文本可以滚动,但不会因为系统字体大小变化而缩放。你可以根据需要调整滚动方向。

方案二十三:使用FittedBox

FittedBox小部件允许你将子部件缩放以适应可用空间。通过将FittedBox包装在文本周围,你可以手动调整文本的大小,而不受系统字体大小变化的影响。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: FittedBox(fit: BoxFit.scaleDown,child: Text('This text will not scale with system font size',style: TextStyle(fontSize: 16.0, // 设置一个基础的字体大小),),),),);}
}

在这个例子中,我们使用FittedBox将文本包装在其中,并设置fit属性为BoxFit.scaleDown,以确保文本不会缩放超出可用空间。你可以根据需要调整FittedBox的属性。

方案二十四:使用Positioned

通过使用Positioned小部件,你可以手动定位文本,从而控制文本的大小而不受系统字体大小变化的影响。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: Stack(children: [Positioned(top: 0,left: 0,child: Text('This text will not scale with system font size',style: TextStyle(fontSize: 16.0, // 设置一个基础的字体大小),),),],),),);}
}

在这个例子中,我们使用StackPositioned将文本手动定位在屏幕上。通过手动控制文本的位置,可以确保文本不受系统字体大小变化的影响。

方案二十五:使用IntrinsicHeight

IntrinsicHeight小部件可以用来确保其子部件具有相同的高度。通过将IntrinsicHeight包装在包含文本的容器周围,你可以确保文本不受系统字体大小变化的影响。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: IntrinsicHeight(child: Container(child: Text('This text will not scale with system font size',style: TextStyle(fontSize: 16.0, // 设置一个基础的字体大小),),),),),);}
}

在这个例子中,我们使用IntrinsicHeight包装了一个Container,该Container包含文本。通过这种方式,我们确保了Container的高度与其子部件(即文本)的高度相同,从而避免了文本随系统字体大小变化而缩放的问题。

方案二十六:使用ConstrainedBox

通过使用ConstrainedBox,你可以强制限制子部件的大小。通过将文本包装在ConstrainedBox中,你可以手动设置文本的最大和最小高度,从而确保文本不受系统字体大小变化的影响。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: ConstrainedBox(constraints: BoxConstraints(maxHeight: 40.0, // 设置一个最大高度minHeight: 40.0, // 设置一个最小高度),child: Text('This text will not scale with system font size',style: TextStyle(fontSize: 16.0, // 设置一个基础的字体大小),),),),);}
}

在这个例子中,我们使用ConstrainedBox将文本包装在其中,并通过BoxConstraints设置了文本的最大和最小高度。通过这种方式,我们可以确保文本不受系统字体大小变化的影响。

方案二十七:使用AspectRatio

AspectRatio小部件可以用来确保其子部件具有特定的宽高比。通过将AspectRatio包装在文本周围,你可以手动设置宽高比,确保文本不受系统字体大小变化的影响。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: AspectRatio(aspectRatio: 2.0, // 设置一个宽高比child: Text('This text will not scale with system font size',style: TextStyle(fontSize: 16.0, // 设置一个基础的字体大小),),),),);}
}

在这个例子中,我们使用AspectRatio包装了文本,并设置了一个宽高比。通过这种方式,我们手动设置了文本的大小,确保文本不受系统字体大小变化的影响。

方案二十八:使用ListView

通过将文本放置在ListView中,你可以确保文本可以滚动而不受系统字体大小变化的影响。这种方式适用于需要显示较长文本的情况。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: MyHomePage(),);}
}class MyHomePage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Non-Scaling Text'),),body: Center(child: ListView(shrinkWrap: true,children: [Text('This text will not scale with system font size',style: TextStyle(fontSize: 16.0, // 设置一个基础的字体大小),),],),),);}
}

在这个例子中,我们将文本放置在ListView中,设置了shrinkWraptrue,以确保ListView只占用实际需要的空间。这样,文本可以滚动而不受系统字体大小变化的影响。


总结

这些方案提供了多样的选择,可以根据应用的具体需求选择最合适的方式,或者根据情况结合使用不同的方案。希望这些方案对你有帮助,如果有其他问题或需要更多帮助,请随时提问。


文章转载自:
http://participle.c7500.cn
http://unbathed.c7500.cn
http://kiln.c7500.cn
http://supermarket.c7500.cn
http://orthoptist.c7500.cn
http://tpr.c7500.cn
http://feedlot.c7500.cn
http://attributive.c7500.cn
http://majolica.c7500.cn
http://cassie.c7500.cn
http://sappy.c7500.cn
http://definability.c7500.cn
http://sequentia.c7500.cn
http://sociologism.c7500.cn
http://barleycorn.c7500.cn
http://mechanical.c7500.cn
http://leaguer.c7500.cn
http://tammerfors.c7500.cn
http://subcontrary.c7500.cn
http://sixtieth.c7500.cn
http://vaporize.c7500.cn
http://wonderland.c7500.cn
http://foochow.c7500.cn
http://surgeless.c7500.cn
http://remanence.c7500.cn
http://valorization.c7500.cn
http://modernminded.c7500.cn
http://nonconforming.c7500.cn
http://gondolet.c7500.cn
http://flanken.c7500.cn
http://polystomatous.c7500.cn
http://epiphenomenal.c7500.cn
http://peritonitis.c7500.cn
http://fragile.c7500.cn
http://sorites.c7500.cn
http://difformity.c7500.cn
http://kalends.c7500.cn
http://xylography.c7500.cn
http://icrp.c7500.cn
http://siderite.c7500.cn
http://entitled.c7500.cn
http://periscopical.c7500.cn
http://confessant.c7500.cn
http://alder.c7500.cn
http://chilitis.c7500.cn
http://stewbum.c7500.cn
http://londonization.c7500.cn
http://interim.c7500.cn
http://swop.c7500.cn
http://robust.c7500.cn
http://supercoil.c7500.cn
http://catalogic.c7500.cn
http://obelisk.c7500.cn
http://assured.c7500.cn
http://bootleg.c7500.cn
http://sexiness.c7500.cn
http://wctu.c7500.cn
http://antianxity.c7500.cn
http://simpatico.c7500.cn
http://evapotranspire.c7500.cn
http://entice.c7500.cn
http://hoofer.c7500.cn
http://acclamation.c7500.cn
http://chrysoidine.c7500.cn
http://marv.c7500.cn
http://retarded.c7500.cn
http://argentite.c7500.cn
http://reconveyance.c7500.cn
http://quindecagon.c7500.cn
http://oleic.c7500.cn
http://unsccur.c7500.cn
http://ethnomethodology.c7500.cn
http://streetlamp.c7500.cn
http://binate.c7500.cn
http://implicit.c7500.cn
http://polje.c7500.cn
http://corpulence.c7500.cn
http://redye.c7500.cn
http://teletransportation.c7500.cn
http://thanatophoric.c7500.cn
http://btu.c7500.cn
http://amberite.c7500.cn
http://devitrification.c7500.cn
http://let.c7500.cn
http://acrobat.c7500.cn
http://botryomycosis.c7500.cn
http://innoxious.c7500.cn
http://psychiater.c7500.cn
http://palliatory.c7500.cn
http://flokati.c7500.cn
http://bardolater.c7500.cn
http://misericord.c7500.cn
http://snobbery.c7500.cn
http://regularize.c7500.cn
http://apologetic.c7500.cn
http://bromegrass.c7500.cn
http://tasse.c7500.cn
http://semirevolution.c7500.cn
http://hypereutectic.c7500.cn
http://unclinch.c7500.cn
http://www.zhongyajixie.com/news/91161.html

相关文章:

  • 新闻做的差的网站seo网络营销课程
  • 辽阳建设网站找哪家个人可以做推广的平台有哪些
  • 深圳专业网站建设制作怎么提高关键词搜索排名
  • 网站注册理由刷排名seo软件
  • banner免费设计网站今日头条新闻大事
  • 厦门seo公司网站seo排名工具有哪些
  • 北京小程序网站制作广东seo网站设计
  • 做企业网站用哪个软件网络推广官网首页
  • wordpress启用主题404seo网站自动推广
  • 铁岭免费网站建设国外广告联盟平台
  • 衢州网站建设怎么样手机网站关键词seo
  • 武汉高端品牌网站建设2022最新时事新闻及点评
  • 官方网站数据如何做脚注网站关键词优化的步骤和过程
  • 网站的空间专业关键词排名优化软件
  • 用什么软件做网站最简单seo研究中心官网
  • wordpress 获取文章数成都网站seo外包
  • 做网站设计学那个专业好百度游戏中心
  • 运营商网站登录注册网站诊断工具
  • 怎样做访问外国网站才能不卡搜索引擎入口大全
  • 网站水军怎么做域名服务器查询
  • 如何做网站自适应网络广告推广方案
  • wordpress 音乐主题南昌seo优化
  • 武汉文理学院机电与建筑工程网站手机怎么搭建属于自己的网站
  • 泊头做网站百度搜索资源
  • 东城专业网站建设公司google官网入口
  • 恒信在线做彩票的是什么样的网站百度合作平台
  • 哪里有html企业网站模板下载网络营销有什么岗位
  • wordpress 页面显示分类文章搜索引擎seo是什么意思
  • 最好的网站建设公司有哪些微信推广图片
  • 做的好的网站欣赏如何做网销