Flutter开发 7.Widget-Text

16 篇文章 0 订阅

Flutter开发 7.Widget-Text

打开lib/main.dart文件, 将里边的代码全部删除,从头开始写自己写一下。

import 'package:flutter/material.dart';

void main() {
  runApp(const Text(
    "First Text Content",
    textDirection: TextDirection.ltr,
  ));
}

这段代码在iOS模拟器上运行的效果如下:
在这里插入图片描述

我们先来简单的说明一下这段代码,首先任何程序都会有一个main函数入口, 哪怕有些不叫这个名字,而我们要做一款APP,所以我们就使用这个runApp的函数来做为主入口,这个方法的源码可以看到:

void runApp(Widget app) {
  WidgetsFlutterBinding.ensureInitialized()
    ..scheduleAttachRootWidget(app)
    ..scheduleWarmUpFrame();
}

ensureInitialized方法, 返回的是一个单例的WidgetsFlutterBinding对像

  static WidgetsBinding ensureInitialized() {
    if (WidgetsBinding.instance == null)
      WidgetsFlutterBinding();
    return WidgetsBinding.instance!;
  }

得到这个单例对像后,将runApp函数传入的widget参数app,传给了scheduleAttachRootWidget并关联为最底层的widget.(注意:两个…可以换行来调用方法,与单个.在同一行调用方法一样的),最后通过scheduleWarmUpFrame这方法启动渲染调度。

总之,我们调用runApp函数,传入的这个widget将做为整个 APP的根部局的widget, 这章主要是对Text这个Widget进行讲解,因为不做过深入的源码说明,后面会有单独的源码分析。这里只要有了一个概念,调用这个runApp函数来实现就行了。

上面例子中文字显在左上角,看不见,我们先将它调整到屏幕中央位置, 因为我们变更的根部局,所在不能直接用hot reload. 需要重新启动APP.

import 'package:flutter/material.dart';

void main() {
  runApp(const Center(
      child: Text(
    "First Text Content",
    textDirection: TextDirection.ltr,
  )));
}

可以看到我们只是在Text外面新加了一个widget名字叫Center, 通过名字就可以知道,他就是为了让的子部局(child),居中显示.
在这里插入图片描述

接下来我们设置下Text中常用的属性值,示例中我们使用了自定义的第三方字体,如果不知道如何相入第三方字体可以查看:Flutter引入第三方字体

import 'package:flutter/material.dart';

void main() {
  runApp(const Center(
      child: Text(
    "First Text Content 1234567890", ///文本内容
    //文本方向 如果需要使用rtl需要add flutter_localizations package to your pubspec.yml
    textDirection: TextDirection.ltr,
    textAlign: TextAlign.center, //对齐方式
    overflow: TextOverflow.ellipsis, //超长后截断方式 ...
    maxLines: 1, //最大行数
    textScaleFactor: 1.6, //放大缩小比例
    style: TextStyle(
      fontFamily: "zzFontFamily", //所用的字体、这里用的是自定义的字体
      fontStyle: FontStyle.normal, //文本显示样式
      fontWeight: FontWeight.bold, //粗体
      letterSpacing: 2, //字母之间的间距
      wordSpacing: 4, //单词之间的间距
      fontSize: 29, //字体大小
      color: Color.fromARGB(255, 174, 0, 255), // 字体颜色
    ),
  )));
}
属性名说明
textDirection文本方向 (如果需要使用rtl,需要在 pubspec.yml中添加 flutter_localizations包)
textAlign文本对齐方式
overflow超长后截断方式
maxLines最大行数
textScaleFactor放大缩小比例
style \ fontFamily指定字体
style \ fontStyle文本显示样式(斜体等)
style \ fontWeight字体重量 如:FontWeight.w500、FontWeight.bold
style \ letterSpacing字母之间的间距
style \ wordSpacing单词之间的间距
style \ fontSize字体大小
style \ color字体颜色

好, 接下来运行一下看看效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuanwenchao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值