Flutter常用控件

本文介绍了Flutter中常用的UI控件,包括富文本、普通文本、 ElevatedButton、FlatButton、OutlineButton、TextButton、ListView及DropdownButton的使用方法,展示了它们在实际应用中的布局和交互效果。

Flutter常用控件
1.富文本控件

class richText extends StatelessWidget {
   
   
  const richText({
   
   
    Key? key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
   
   
    return Text.rich(TextSpan(
      children: [
        TextSpan( text: "hello world",
            style: TextStyle(
                fontSize: 20,
                color: Colors.red
            )
        ),
        WidgetSpan(child: Icon(Icons.favorite,color: Colors.amber,)),
        TextSpan( text: "hello world",
            style: TextStyle(
                fontSize: 20,
                color: Colors.green
            )
        )
      ],

    )

    );
  }
}

2.文本控件

class TextWidget extends StatelessWidget {
   
   
  const TextWidget({
   
   
    Key? key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
   
   
    return Text("阿是大\n法官寒假大萨达撒撒的撒多萨达多\n撒多撒多快乐",

      style: TextStyle(
          fontSize: 30,
          color: Colors.red

      ),
      textAlign: TextAlign.center,);
  }
}

3.按钮控件

class _HomeBodyState extends State<HomeBody> {
   
   
  @override
  Widget build(BuildContext context) {
   
   
    return Column(
      children:<Widget> [
        //1.凸起
       ElevatedButton(onPressed: ()=>null, child: Icon(Icons.add)),
        //2.平整
        FlatButton(onPressed: ()=>null,color: Colors.amberAccent, child: Icon(Icons.add)),
        //
        OutlineButton(onPressed: ()=>null,color: Colors.red,focusColor:Colors.red,child: Icon(Icons.add),),
        TextButton.icon(onPressed: ()=>null, icon: Icon(Icons.add), label: Text("label")),
        FlatButton(onPressed: ()=>null, color:  Colors.orange,child: Row(

          children: [
            Icon(Icons.add),

            Text("点击")
          ],
        ))
      ],

    );
  }
}

4.Listview列表控件

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget{
   
   
  @override
  Widget build(BuildContext context){
   
   
    return MaterialApp(
      title:'QGS Flutter',
      home:Scaffold(
          appBar:new AppBar(
              title:new Text('ListView Widget')
          ),
          body: new ListView(
              children:<Widget>[
                new ListTile(
                    leading:new Icon(Icons.access_time),
                    title:new Text('access_time')
                ),
                new ListTile(
                    leading:new Icon(Icons.access_time),
                    title:new Text('access_time')
                ),
                new ListTile(
                    leading:new Icon(Icons.access_time
<think>嗯,用户需要了解Flutter常用组件的相关信息。从用户查询和提供的引用来看,用户特别提到了引用[1]中的八大常用组件,以及引用[2]中提到的Scaffold组件结构。看来用户可能是刚接触Flutter开发,需要基础组件的系统性介绍。 用户两次都提到"常用组件"这个关键词,说明需求很明确。结合提供的引用材料,确实需要重点介绍八组核心组件,特别是引用[2]详细说明的Scaffold框架组件。考虑到Flutter组件体系庞大,应该优先介绍高频使用的基础组件。 在整理回复时,准备采用分类讲解的方式:先把组件分成布局类、基础元素类和页面框架类,这样更符合开发者的认知逻辑。每个类别下准备挑选最典型的3-4个组件说明,比如布局类必须包含Row/Column/Stack,页面框架类重点解析Scaffold结构。对于Scaffold组件,需要把引用[2]提到的appBar/body/drawer等区域功能完整呈现。 用户没有明确需求深度,但作为新手引导,每个组件应该包含核心功能和使用场景说明,比如Text组件要强调样式定制能力。最后考虑补充组件组合使用的实例,展示如何用基础组件构建界面,这样能呼应引用[1]中"合理使用它们可以帮助我们构建出高质量的应用程序"的观点。 需要特别注意引用标注的规范性,所有涉及引用[1][2]的内容都要明确标注来源。结尾考虑设计两个实用性问题:常见布局实现和状态管理方案,这样既能检验理解又能引导深入学习。 </think>以下是Flutter常用组件的系统介绍及核心功能说明,结合官方最佳实践整理[^1][^2]: ### 一、布局类组件 1. **Row/Column** - 线性布局组件:`Row`水平排列,`Column`垂直排列 - 关键属性:`mainAxisAlignment`(主轴对齐)、`crossAxisAlignment`(交叉轴对齐) - 示例:`Column(children: [Text("顶部"), Text("底部")])` 2. **Stack** - 层叠布局:实现组件重叠效果 - 配合`Positioned`控制子组件位置: ```dart Stack( children: [ Container(color: Colors.blue), Positioned(top: 10, child: Icon(Icons.star)) ] ) ``` 3. **ListView** - 滚动列表:支持垂直/水平滚动 - 动态构建项:`ListView.builder(itemBuilder: (context, index) => ListTile(...))` --- ### 二、基础UI组件 | 组件 | 功能描述 | 常用属性 | |-------------|----------------------------|--------------------------| | `Text` | 文本显示 | `style`(字体/颜色/大小) | | `Image` | 图片加载 | `AssetImage`/`NetworkImage` | | `Icon` | 图标展示 | `Icons`集合(内置800+图标)| | `TextField` | 文本输入 | `controller`(输入控制) | --- ### 三、页面框架组件 - Scaffold[^2] ```dart Scaffold( appBar: AppBar(title: Text("首页")), // 顶部导航栏 drawer: Drawer(child: ListView(...)), // 侧边抽屉 body: Center(child: Text("主体内容")), // 页面主体 bottomNavigationBar: BottomAppBar( // 底部导航 child: Row(children: [Icon(Icons.home)...]) ), floatingActionButton: FloatingActionButton( // 悬浮按钮 onPressed: () => print("点击"), child: Icon(Icons.add) ), ) ``` ### 四、交互组件 1. **Button系列** - `ElevatedButton`:凸起按钮(主操作) - `TextButton`:扁平按钮(次要操作) - `IconButton`:图标按钮(工具栏) 2. **状态管理** - `StatefulWidget`:管理动态状态 ```dart class Counter extends StatefulWidget { @override _CounterState createState() => _CounterState(); } ``` --- ### 五、组合使用示例 ```dart Column( children: [ Image.network("https://example.com/header.jpg"), Padding( padding: EdgeInsets.all(16), child: TextField(decoration: InputDecoration(hintText: "搜索")), ), Expanded( child: ListView.builder( itemCount: 20, itemBuilder: (ctx, i) => ListTile(title: Text("项目$i")) ) ) ] ) ``` > **提示**:Flutter通过组件组合构建复杂界面,推荐使用`MaterialApp`作为入口组件以确保Material Design规范[^1],如需实现特定平台风格可选用`CupertinoApp`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值