【Flutter入门到进阶】Flutter基础篇---第一个Flutter应用

news2025/1/10 17:29:45

1 Flutter目录结构介绍

1.1 创建项目

        flutter create flutterdemo

1.2 目录结构

1.3 结构说明

        1、android、ios、linux、macos、web、windows文件夹:都是对应平台相关代码

        2、lib文件夹:flutter相关代码,我们编写的代码就在这个文件夹

        3、test文件夹:用于存放测试代码

        4、pubspec.yaml:配置文件,一般存放一些第三方库的依赖。

        5、analysis_options.yaml文件:分析dart语法的文件,老项目升级成新项目有警告信息的话可以删掉 此文件

2 Flutter入口文件、入口方法

2.1 说明

每一个flutter项目的lib目录里面都有一个main.dart这个文件就是flutter的入口文件
main.dart里面的

2.2 示例

void main(){
    runApp(MyApp());
}
//也可以简写
void main()=>runApp(MyApp());

其中的main方法是dart的入口方法。

runApp方法是flutter的入口方法。

MyApp是自定义的一个组件

3 Flutter第一个Demo Center组件的使用

demo1

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

void main() {
  runApp(const Center(
    child: Text(
      "我是一个文本",
      textDirection: TextDirection.ltr,
    ),
  ));
}

使用可选参数添加相关属性信息

import 'package:flutter/material.dart';

void main() {
  runApp(const Center(
    child: Text(
      "我是一个文本",
      textDirection: TextDirection.ltr,
      style: TextStyle(
        fontSize: 40.0,
// color: Colors.yellow,
        color: Color.fromRGBO(244, 233, 121, 0.5),
      ),
    ),
  ));
}

demo3

import 'package:flutter/material.dart';

//MaterialApp 和 Scaffold两个组件装饰App
void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: const Text("你好Flutter")),
      body: const Center(
        child: Text(
          "我是一个文本",
          textDirection: TextDirection.ltr,
          style: TextStyle(
            fontSize: 40.0,
// color: Colors.yellow,
            color: Color.fromRGBO(244, 233, 121, 0.5),
          ),
        ),
      ),
    ),
  ));
}

demo4

import 'package:flutter/material.dart';

import 'package:flutter/material.dart';

//MaterialApp 和 Scaffold两个组件装饰App
void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: const Text("你好Flutter")),
      body:const HomeWidget(),
    ),
  ));
}
//抽离组件
class HomeWidget extends StatelessWidget{
  const HomeWidget({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const Center(
      child: Text(
        "我是一个文本",
        textDirection: TextDirection.ltr,
        style: TextStyle(
          fontSize: 40.0,
// color: Colors.yellow,
          color: Color.fromRGBO(244, 233, 121, 0.5),
        ),
      ),
    );
  }

}

4 MaterialApp 和 Scaffold两个组件装饰App

4.1 MaterialApp

        MaterialApp是一个方便的Widget,它封装了应用程序实现Material Design所需要的一些Widget。一 般作为顶层widget使用。

        常用的属性:

                home  (主页)

                title  (标题)

                color  (颜色)

                theme  (主题)

                routes  (路由)

                ...

4.2 Scaffold

        Scaffold是Material Design布局结构的基本实现。此类提供了用于显示drawer、snackbar和底部sheet 的API。

        Scaffold 有下面几个主要属性:

                appBar - 显示在界面顶部的一个 AppBar。

                body - 当前界面所显示的主要内容 Widget。

                drawer - 抽屉菜单控件。

5 Flutter把内容单独抽离成一个组件

        在Flutter中自定义组件其实就是一个类,这个类需要继承StatelessWidget/StatefulWidget 前期我们都继承StatelessWidget。后期给大家讲StatefulWidget的使用。

        StatelessWidget 是无状态组件,状态不可变的widget

        StatefulWidget 是有状态组件,持有的状态可能在widget生命周期改变

示例

import 'package:flutter/material.dart';

import 'package:flutter/material.dart';

//MaterialApp 和 Scaffold两个组件装饰App
void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: const Text("你好Flutter")),
      body:const HomeWidget(),
    ),
  ));
}

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

  @override
  Widget build(BuildContext context) {
    return const Center(
      child: Text(
        "我是一个文本",
        textDirection: TextDirection.ltr,
        style: TextStyle(
          fontSize: 40.0,
// color: Colors.yellow,
          color: Color.fromRGBO(244, 233, 121, 0.5),
        ),
      ),
    );
  }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/380118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

八、异步编程

文章目录异步编程FutureTask应用&源码分析FutureTask介绍FutureTask应用FutureTask源码分析FutureTask中的核心属性FutureTask的run方法FutureTask的set&setException方法FutureTask的cancel方法FutureTask的get方法FutureTask的finishCompletion方法CompletableFuture…

DevOps 学习笔记(一) | DevOps 简介及环境搭建

1. 环境配置 本次实验需要三台服务器CI/CD 服务器、应用服务器和Harbor 服务器 DevOps 步骤 程序员将代码 push 到代码仓库Jenkins 根据触发条件拉取代码到CI/CD 服务器Jenkins 使用 Maven 将代码 build 成 jar 包Jenkins 使用 jar 包通过 Dockerfile 和 docker-compose.yml…

HBase JMX 指标学习

名词解释: JMX:Java Management Extensions,用于用于Java程序扩展监控和管理项。 GC:Garbage Collection,垃圾收集,垃圾回收机制。 1、概述 说到对Hadoop和 HBase的集群监控,大家知道的和用…

YOLOv8详解 【网络结构+代码+实操】

文章目录YOLOv8 概述模型结构Loss 计算训练数据增强训练策略模型推理过程网络模型解析卷积神经单元(model.py)Yolov8实操快速入门环境配置数据集准备模型的训练/验证/预测/导出使用CLI使用python多任务支持检测实例分割分类配置设置操作类型训练预测验证…

FastDDS-4.RTPS层

4. RTPS层 eprosima Fast DDS的较低层RTPS层是RTPS标准协议的实现。与DDS层相比,该层提供了对通信协议内部的更多控制,因此高级用户可以更好地控制库的功能。 4.1 与DDS层的关系 该层的元素与DDS层的元素一一对应,并添加了一些元素。该对应…

【使用两个栈实现队列】

文章目录一、栈和队列的基本特点二、基本接口函数的实现1.栈的接口2.创建队列骨架3.入队操作4.取出队列元素5.返回队首元素6.判断队列是否为空7.销毁队列总结一、栈和队列的基本特点 栈的特点是后进先出,而队列的特点是先进先出。 使用两个栈实现队列,必…

【DataX】数据同步到PG时遇到的分区不存在问题

数据同步到PG时遇到的分区不存在问题前言正文问题分析解决方法结语前言 大概说下这个问题牵扯出来的背景,一个外场项目,选型用PG存业务数据,然后客户要求保存保留一年的数据,运行到现在服务器5个T的磁盘已经有点扛不住了&#xf…

内存的管理

取指令——译码——执行——返存 计组课我们学过cpu真正读指令并非是从内存中读入,而是从cache读和存,再由cache进行取指或返存,因为cpu指令周期比内存周期速度快很多,cpu若要取指或返存都需要等待内存完成他的动作才可以进行下一…

python爬虫:如何定义内容提取器

项目背景 在python 即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间,从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端的数据处理工作中。 解决方案 为了解决这个问题…

微信小程序使用scss编译wxss文件的配置步骤

文章目录1、在 vscode 中搜索 easysass 插件并安装2、在微信开发工具中导入安装的easysass插件3、修改 spook.easysass-0.0.6/package.json 文件中的配置4、重启开发者工具,就可用使用了微信小程序开发者工具集成了 vscode 编辑器,可以使用 vscode 中众多…

C++修炼之练气期三层——函数重载

目录 1.引例 2.函数重载的概念 3.C支持函数重载的原理 1.引例 倘若现在要实现一个加法计算器,用C语言实现的话我们会选择这样的方式: int Add_int(int a, int b) {return a b; }double Add_double(double a, double b) {return a b; } 在使用加…

Exposure2023专业摄影RAW格式大师专业滤镜特效

Exposure2023是一款专为摄影艺术设计的图像编辑器。新的 Exposure2023结合了专业级的照片调整、庞大的华丽照片库和令人愉悦的高效设计。可以提供最大,最准确的电影外观选择。Exposure的创意外观不仅限于电影模拟,从干净优雅的现代风格到引人注目的色彩变…

SpringBoot+Nacos+OpenFeign环境搭建

目录 1.boot方式nacos与openFeign集成 1.引入依赖 2.添加配置 3.测试接口调用 4.常见问题: 1.版本依赖 2.nacos客户端 2.cloud方式nacos与openFeign集成 1.引入依赖 2.添加配置 3.接口定义 4.开启FeignClients客户端 5.远程接口测试 6.Nacos配置中心 1…

Java - 数据结构,二叉树

一、什么是树 概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 1、有…

SAP ERP系统MM模块常用增强之四:采购申请输入字段的校验检查

在SAP/ERP项目的实施中采购管理模块(MM)的创建和修改采购申请一般都会有输入字段校验检查的需求,来防止业务人员录入错误或少录入数据,这方面需求部分是可以通过配置实现,比如一些字段是否必输,是否显示等&…

WebRTC拥塞控制算法——GCC介绍

网络拥塞是基于IP协议的数据报交换网络中常见的一种网络传输问题,它对网络传输的质量有严重的影响, 网络拥塞是导致网络吞吐降低, 网络丢包等的主要原因之一, 这些问题使得上层应用无法有效的利用网络带宽获得高质量的网络传输效果…

C++——智能指针1

目录 RAII auto_ptr模拟实现 智能指针拷贝问题 唯一指针 shared_ptr(可以拷贝) shared_ptr模拟实现 完整代码 循环引用 weak_ptr模拟实现 定制删除器 shared_ptr定制删除器模拟实现 内存泄漏 RAII RAII(Resource Acquisit…

SkyWalking使用案例

SkyWalking监控java项目Halo博客 Halo是一个开源的博客项目,使用java编写,官网地址:https://halo.run/ 安装java环境,Halo对java版本有限制,1.4.3版本以上需要使用java11以上 apt -y install openjdk-11-jdk java -…

matplotlib常用操作

文章目录1 matplotlib绘图1.1 绘图步骤2 matplotlib基本元素2.1 matplotlib 画布2.2 设置坐标轴长度和范围2.3 设置图形的线型和颜色2.4 设置图形刻度范围、刻度标签和坐标轴标签等2.4.1 设置刻度范围2.4.2 设置坐标轴刻度2.5 文本标签图例3 matplotlib的ax对象绘图4 绘制子图5…

2.3 黑群晖驱动:开启nvme缓存、将nvme缓存作为存储盘 教程

黑群晖驱动安装工具下载:链接:https://pan.baidu.com/s/1CMLl6waOuW-Ys2gKZx7Jgg?pwdchct提取码:chct一、开启NVME缓存在群辉->控制面板->终端机和SNMP->终端机中 勾选“启动SSH”功能,并点击应用;下载安装P…