Flutter常用Widget小部件

小部件Widget是一个类,按照继承方式,分为无状态的StatelessWidget和有状态的StatefulWidget。

这里先创建一个简单的无状态的Text小部件。

Text文本Widget

文件:lib/app/app.dart

dart 复制代码
import 'package:flutter/material.dart';

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
        child: Text(
      '你好世界!',
      textDirection: TextDirection.ltr,
      style: TextStyle(
        fontSize: 50.0,
        color: Color(0xAAFF0000),
        backgroundColor: Color(0xAAFFFFFF),
      ),
      textAlign: TextAlign.center,
      overflow: TextOverflow.ellipsis,
    ));
  }
}

这里引用了flutter的material包,里面包含StatelessWidget类。

Flutter调用Widget

dart 复制代码
import 'package:flutter/material.dart';
import 'package:package_name/app/app.dart';

void main() {
  runApp(App());
}

RichText 富文本

dart 复制代码
import 'package:flutter/material.dart';

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
        child: RichText(
      textDirection: TextDirection.ltr,
      text: TextSpan(text: '你好,', style: TextStyle(fontSize: 50.0), children: [
        TextSpan(
          text: '世界!',
          style: TextStyle(
            color: Colors.pinkAccent,
            fontWeight: FontWeight.bold,
          ),
        ),
        TextSpan(text: '我来了!'),
      ]),
    ));
  }
}

这里用到了RichText,详情见:https://api.flutter-io.cn/flutter/widgets/RichText-class.html

Image(图像)

显示资源包里的图像

dart 复制代码
import 'package:flutter/material.dart';

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Image.asset(
        'assets/images/1.png',
        width: 300,
      ),
    );
  }
}

dart 复制代码
import 'package:flutter/material.dart';

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Image(
        image: AssetImage('assets/images/1.png'),
        width: 300,
      ),
    );
  }
}

这里用到了图片,需要把图片放到assets/images目录下,然后在pubspec.yaml定义资源名称,

dart 复制代码
  assets:
    - assets/images/1.png

显示来自网络的图像

dart 复制代码
import 'package:flutter/material.dart';

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Image(
        image: NetworkImage(
            'https://img-home.csdnimg.cn/images/20250107060517.png'),
        width: 300,
      ),
    );
  }
}

这里用了Image挂件

容器

dart 复制代码
import 'package:flutter/material.dart';

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        color: Colors.deepPurpleAccent, // 容器颜色
        alignment: Alignment.topCenter, // 对齐方式
        padding: EdgeInsets.all(60), // 边距
        child: Image(
            image: NetworkImage(
                'https://img-home.csdnimg.cn/images/20250107060517.png'),
            fit: BoxFit.cover // 适应空间
            ),
      ),
    );
  }
}

装饰容器

dart 复制代码
import 'package:flutter/material.dart';

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        decoration: BoxDecoration(
            color: Colors.deepOrangeAccent,
            borderRadius: BorderRadius.all(Radius.circular(25)),
            border: Border.all(
              color: Colors.deepOrangeAccent,
              style: BorderStyle.solid,
            ),
            boxShadow: [
              BoxShadow(
                color: Colors.deepOrangeAccent,
                offset: Offset(5, 20),
                blurRadius: 30,
              )
            ]),
        alignment: Alignment.topCenter, // 对齐方式
        padding: EdgeInsets.all(0), // 边距
        width: 400,
        height: 200,
        child: Image(
            image: AssetImage('assets/images/1.png'), fit: BoxFit.cover // 适应空间
            ),
      ),
    );
  }
}

这里用到了容器装饰器BoxDecoration

相关推荐
stringwu1 天前
Flutter 开发必备:MVI 架构的高效实现指南
前端·flutter
程序员老刘2 天前
Flutter版本选择指南:3.44系列继续观望 | 2026年6月
flutter·ai编程·客户端
用户965597361903 天前
Provider vs Bloc vs GetX vs Riverpod:Flutter 状态管理方案怎么选?
flutter
恋猫de小郭3 天前
Flutter Patchwork,不用 Fork 改依赖包源码的第三方工具
android·前端·flutter
程序员老刘4 天前
跑分第一的编程大模型,我为啥不用?
flutter·ai编程·vibecoding
恋猫de小郭4 天前
苹果 AirPods 协议,Android 也可以使用完整版 AirPods 能力
android·前端·flutter
张风捷特烈4 天前
Flutter 类库大揭秘#01 | path_provider架构与设计
android·flutter
恋猫de小郭7 天前
Android 限制侧载新进展,谷歌联合国内厂商推验证计划
android·前端·flutter
恋猫de小郭7 天前
解读 Android 17 全新内存限制,有没有“豁免”后门?
android·前端·flutter
程序员老刘9 天前
跨平台开发地图 | 2026年6月
flutter·ai编程·客户端