快速写一个自己的flutter应用(新手入门)

news/2024/9/16 7:54:27/ 标签: flutter

1、搭建开发环境

详细文档可以参考如下链接:跟着官方文档走就可以了。

1.3 搭建Flutter开发环境 | 《Flutter实战·第二版》 (flutterchina.club)

开发 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

我的安装过程:

首先,在VS code里面,安装Dart插件

然后按住ctrl shift P,  跳出正上方的命令行, 输入flutter,新建一个应用。

这个时候vs会自动下载你所需要的flutter的sdk以及dart语言包之类的依赖,然后跟着步骤走就可以安装好了。

需要注意的是,如果中途下载失败了,大概率网络问题,那么修改镜像来源

PS:看各个文档都有说,flutter开发需要安装安卓的环境、模拟器,以及最好android studio开发,笔者自己是这几个都没搞,最后也运行Demo成功,用vs开发,在edge上模拟运行(当然这只是新手快速入门)

2、快速入门(写一个简单的页面)

参考视频如下

07.定义电影列表控件并传递电影类型_哔哩哔哩_bilibili

界面最终效果大抵如下

PS:视频是18年的,flutter有些内容毫无疑问是更新了,但是笔者目前看来是优化的更丝滑了,所以照着这个实践一下还是没有问题的。

3、一些flutter的入门知识点(还在学习补充中...)

3.1 Widget 概念    

在 Flutter 中,Widget 是用户界面(UI)的基本构建块。几乎所有的东西都是 Widget,包括布局、文本、按钮等。理解 Widget 是掌握 Flutter 的关键。

  PS:也就是说,widget更像是一个配置模块,本身不负责渲染,而是由渲染树render tree来渲染展示内容。

什么是 Widget

在 Flutter 中,Widget 是一个用于构建用户界面的不可变描述。它们描述了视图的当前配置或状态。当某些状态发生变化时,Flutter 会创建一个新的 Widget 树,并将其与旧的 Widget 树进行比较,来确定需要更新的部分。

Widget 可以分为两大类:

  1. 有状态的 Widget (StatefulWidget)
  2. 无状态的 Widget (StatelessWidget)

1. 无状态的 Widget (StatelessWidget)

无状态的 Widget 是不可变的,这意味着它们的属性不能在运行时更改。无状态的 Widget 适用于不依赖于任何状态变化的场景,比如静态文本或者简单图标。

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('无状态 Widget 示例'),),body: const Center(child: Text('这是一个无状态的 Widget'),),),);}
}

在上面的例子中,MyApp 是一个无状态的 Widget,因为它不需要在运行时更新任何状态。

2. 有状态的 Widget (StatefulWidget)

有状态的 Widget 是可变的,它们在其生命周期中可以改变状态。当用户与应用程序交互时,StatefulWidget 可以根据需要重新构建自身。

StatefulWidget 由两个类组成:

  • StatefulWidget 类:这是一个不可变类,包含 Widget 配置数据。
  • State 类:这个类是可变的,包含 Widget 的状态和逻辑。
import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('有状态 Widget 示例'),),body: Center(child: CounterWidget(),),),);}
}class CounterWidget extends StatefulWidget {@override_CounterWidgetState createState() => _CounterWidgetState();
}class _CounterWidgetState extends State<CounterWidget> {int _counter = 0;void _incrementCounter() {setState(() {_counter++;});}@overrideWidget build(BuildContext context) {return Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[Text('计数器的值是:$_counter',style: const TextStyle(fontSize: 24),),ElevatedButton(onPressed: _incrementCounter,child: const Text('增加计数器'),),],);}
}

在这个例子中:

  • CounterWidget 是一个有状态的 Widget,它依赖于内部的状态变化来重新渲染。
  • _CounterWidgetState 类管理着计数器的状态 _counter
  • 当按钮被按下时,_incrementCounter 方法被调用,setState() 触发 UI 重建来反映计数器的新值。

Widget 的构建方法

Widget 的核心是 build() 方法,这个方法返回一个 Widget 树,用于描述应如何显示 Widget


http://www.ppmy.cn/news/1520546.html

相关文章

ZooKeeper:浅谈ZooKeeper的Watch机制

ZooKeeper&#xff1a;浅谈对ZooKeeper的认识 一、ZooKeeper的Watch机制是什么 ZooKeeper是用来协调&#xff08;同步&#xff09;分布式进程的服务&#xff0c;提供了一个简单高性能的协调内核&#xff0c;用户可以在此之上构建更多复杂的分布式协调功能。 多个分布式进程通…

docker安装prometheus、grafana监控SpringBoot

1. 概述 最新有一个需求&#xff0c; 需要安装一个监控软件&#xff0c;对SpringBoot程序进行监控&#xff0c; 包括机器上cpu, 内存&#xff0c;jvm以及一些日志的统计。 这里需要介绍两款软件&#xff1a; prometheus 和 grafana prometheus: 中文名称&#xff0c; 普罗米…

[论文笔记]Dimensionality Reduction by Learning an Invariant Mapping

引言 今天带来一篇真正远古(2005年)论文的笔记,论文是Dimensionality Reduction by Learning an Invariant Mapping。 该论文中提出的对比损失(2.1节)可以用于训练嵌入模型。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 降维涉及将一…

LLM代码实现-Qwen(下载和调用)

基本介绍 Qwen 基础模型已经稳定训练了大规模高质量且多样化的数据&#xff0c;覆盖多语言&#xff08;当前以中文和英文为主&#xff09;&#xff0c;Qwen 目前有多个版本&#xff1a;1.8B、7B、14B、72B&#xff0c;同时还开源了 Qwen-VL、Qwen-Audio 两款多模态模型。阿里可…

力扣2503.矩阵查询可获得的最大分数

力扣2503.矩阵查询可获得的最大分数 离线算法 排序 小根堆 将query数组从小到大排序&#xff0c;用小根堆存每个单元格的值从小到大遍历query&#xff0c;如果堆顶元素小于query[i]&#xff0c;弹出&#xff0c;直到全部弹出&#xff0c;总弹出个数为答案 class Solution …

Vue3项目开发——新闻发布管理系统(五)

文章目录 七、登录&注册页面设计开发4、后端接口调用4.1 AXIOS请求工具封装4.2 创建 axios 实例①安装 axios② 封装 axios 模块4.3完成 axios 基本配置5 实现 注册功能5.1 创建接口调用js文件5.2 页面中调用注册方法6 实现 登录功能6.1 创建接口调用js文件6.2 页面中调用登…

【STM32开发】GPIO最全解析及应用实例

目录 【1】GPIO概述 GPIO的基本概念 GPIO的应用 【2】GPIO功能描述 1.IO功能框图 2.知识补充 3.功能详述 浮空输入 上拉输入 下拉输入 模拟输入 推挽输出 开漏输出 复用开漏输出和复用推挽输出 【3】GPIO常用寄存器 相关寄存器介绍 4个32位配置寄存器 2个32位数据寄存器 1个32位…

能大致讲一下Chat GPT的原理吗?

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 话题群精选了三位网友的回答&#xff0c;从不同的角度阐释了Chat GPT的原理。 第一位网友的回答&#xff1a; 不给你扯长篇大论&#…

Gateway的基本概念

1.Gateway概念介绍 1.1Gateway介绍 Gateway网络为微服务架构提供简单且统一的API路由管理&#xff0c;作为系统的统一入口。 Gateway可以为客户端提供统一的服务&#xff0c;例如认证、路由转发、防刷、流量控制、监控日志等。 Gateway是无状态的&#xff0c;不存放数据&…

spring boot 项目 跟 JavaScript 简单 websocket 使用

文章目录 websocket 简绍WebSocket 的优势包括&#xff1a;JavaScript 设置处理事件 Java 服务端设置导jar包创建WebSocket端点EnableWebSocketregisterWebSocketHandlers 实现WebSocket处理器afterConnectionEstablishedafterConnectionClosedhandleTextMessage 注销WebSocket…

C# 使用微软OFFICE库操作excel

C# 使用微软OFFICE库操作excel写入数据 using System; using Excel Microsoft.Office.Interop.Excel;namespace ExcelExample {class Program{static void Main(string[] args){// 创建Excel应用程序实例Excel.Application excelApp new Excel.Application();// 让Excel应用…

Python 读写 Excel 文件:创建、遍历、更新与样式处理

Excel 是广泛使用的电子表格软件&#xff0c;用于数据存储、分析和可视化。Python 通过第三方库如 openpyxl 和 pandas 提供了丰富的功能来读写 Excel 文件。本文将详细介绍如何使用 Python 进行 Excel 文件的创建、遍历、更新、删除以及样式处理等操作。 1. 安装必要的库 首…

【计算机网络】socket编程 --- 实现简易TCP网络程序

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

【Pytorch实用教程】tqdm的作用:在循环中显示进度条

tqdm 是一个 Python 库,用于在循环中显示进度条。它能够为任何可迭代对象(例如列表、生成器、数据加载器等)添加一个可视化的进度条,使用户可以实时查看程序的执行进度。 在数据科学和机器学习领域,tqdm 经常用于显示训练和验证过程中的进度。例如,在训练神经网络时,由…

编译 ffmpeg 以支持AVS格式视频解码与解码

前言 当前文章介绍如何在Linux下使用FFmpeg转码其他视频格式到AVS格式的指南&#xff0c;包括编译FFmpeg以支持XAVS编码和如何使用FFmpeg进行转码。 AVS (Audio Video Coding Standard) 格式是一种由中国主导制定的视频编码标准&#xff0c;全称为“中国数字音视频编解码技术…

装饰器模式及应用【理论+代码】

装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种设计模式通过创建一个包装对象&#xff0c;即装饰器&#xff0c;来封装实际对象。 装饰器模式的主要组成&#…

图像处理之透视变换

透视变换 什么是透视变换透视变换有什么用 什么是透视变换 透视变换&#xff08;把斜的图变正&#xff0c;也就是一种坐标系到另外一种坐标系&#xff09;是一种图像处理技术&#xff0c;它利用透视中心、像点、目标点三点共线的条件&#xff0c;按透视旋转定律使承影面&#…

python读取excel数据

在处理Excel数据时&#xff0c;Python 提供了多种强大的库来读取、处理以及分析这些数据。最常用的库之一是 pandas&#xff0c;它建立在 numpy、matplotlib 和 scipy 等库之上&#xff0c;为数据分析和操作提供了高级的、易于使用的数据结构和数据分析工具。另一个流行的库是 …

Java设计模式—策略模式(Strategy)

模式动机 完成一项任务&#xff0c;往往可以有多种不同的方式&#xff0c;每一种方式称为一个策略&#xff0c;我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。在软件开发中也常常遇到类似的情况&#xff0c;实现某一个功能有多个途径&#xff0c;此时可以使用…

【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况(2)

本示例是通过prometheus的node exporter收集主机的信息&#xff0c;然后在grafana的dashborad进行展示。本示例使用到的组件均是最新的&#xff0c;下文中会有具体版本说明&#xff0c;linux环境是centos。本示例分为四个部分&#xff0c;即prometheus、grafana、node exporter…