Flutter技术学习

news2024/11/28 12:33:41

以下内容更适用于 不拘泥于教程学习,而是从简单项目入手的初学者。

在开始第一个项目之前,我们先要了解 两个概念。

Widget 和 属性

  • Widget 是用户界面的基本构建块,可以是任何 UI 元素。
  • 属性 是 widget 类中定义的变量,用于配置和定制 widget 的外观和行为。
  • 当你创建一个 widget 时,可以通过构造函数传递参数来设置这些属性,从而定制 widget 的表现。
  • Widget包含属性

UI 元素:Text、Image、Container、Column、AppBar 、布局等等

外观:颜色、大小、形状等等

行为:点击事件、动画、数据更新等等

vscode创建默认项目(这里默认前置工作都已经准备好了)

1. Hellow world

替换lib\main.dart

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

// 定义无状态组件
class MyApp extends StatelessWidget{
  const MyApp({super.key});

  @override
  Widget build(BuildContext context){
    return MaterialApp(
      // 初始标题
      title: 'Welcome to flutter',
      // 初始页面
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Welcome to flutter'),
        ),
        // 居中   一个子widget
        body: const Center(
          child: Text(
          'Hellow World', 
          // 字体样式
          style: TextStyle(
            // 字体颜色
            color: Colors.green,
          )),
        ),
        // 垂直排列 多个子widget
        // body: Column(
        //   // 只能定义一个children属性 可包含 一个wedget或者wedget列表
        //   children: [
        //     const Text("Hello World"),
        //     Image.network("https://gd-hbimg.huaban.com/88b49ee5dc63c49f26d984a71ce061729f27070c3124c-jZyeMc_fw1200webp",fit: BoxFit.cover),
        //     const Center(
        //       child: Text("Hello world"),
        //     ),
        //   ],
          
        // ),
      ),
    );
  }
}

flutter run 命令运行 

2. 使用依赖包(package) 

包管理:https://pub.dev/

 打开包管理网站 搜索 english_words 

终端运行  flutter packages get  获取依赖包 

import 'package:flutter/material.dart';
// 引入 英文单词 包
import 'package:english_words/english_words.dart';

void main() {
  runApp(const MyApp());
}

// 定义无状态组件
class MyApp extends StatelessWidget{
  
  const MyApp({super.key});
  

  @override
  Widget build(BuildContext context){
    
    return MaterialApp(
      // 初始标题
      title: 'Welcome to flutter',
      // 初始页面
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Welcome to flutter'),
        ),
        // 居中   一个子widget
        body: Center(
          child: Text(
          generateWordPairs().take(10).map((pair) => pair.asPascalCase).join('\n'), 
          // 字体样式
          style: TextStyle(
            // 字体颜色
            color: Colors.green,
          )),
        ),
      ),
    );
  }
}

保存 终端 输入r  热重载运行 

 

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

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

相关文章

Python脚本分类和代码举例

Python是一种强大且灵活的编程语言,被广泛应用于数据分析、Web开发、自动化、人工智能等领域。在不同的应用场景下,Python脚本可以被分类为多种类型。本文将深入分析Python脚本的分类,同时提供相关代码示例,帮助读者理解和应用这些…

Spring AI 介绍与入门使用 -- 一个Java版Langchain

Langchain 是什么? Langchain 是一个Python 的AI开发框架,它集成了模型输入输出、检索、链式调用、内存记忆(Memory)、Agents以及回调函数等功能模块。通过这些模块的协同工作,它能够支持复杂的对话场景和任务执行流程…

【大数据】数据采集工具sqoop介绍

文章目录 什么是sqoop?一、Sqoop的起源与发展二、Sqoop的主要功能三、Sqoop的工作原理四、Sqoop的使用场景五、Sqoop的优势六、Sqoop的安装与配置 sqoop命令行一、Sqoop简介与架构二、Sqoop特点三、Sqoop常用命令及参数四、使用示例五、注意事项 什么是sqoop? Sqoop是一款开…

BlackMarket_ 1靶机渗透

项目地址 plain https://download.vulnhub.com/blackmarket/BlackMarket.zip 实验过程 开启靶机虚拟机 ![](https://img-blog.csdnimg.cn/img_convert/169d964d61ea9660c1104e723f71449e.png) 使用nmap进行主机发现,获取靶机IP地址 plain nmap 192.168.47.1-254…

D34【python 接口自动化学习】- python基础之输入输出与文件操作

day34 文件关闭 学习日期:20241011 学习目标:输入输出与文件操作﹣-46 常见常新:文件的关闭 学习笔记: 文件关闭的内部工作过程 close()函数 with语句 常用的打开关闭文件 # 文件关闭 # 方式…

第十八篇——有什么比无穷大更大,比无穷小更小?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 看到这篇文章之后,我才发现,我还可以多么有知&…

IP-Guard与Ping32两大加密软件对比:安全性、功能与性能全面评测

随着网络安全威胁的不断升级,越来越多的企业开始重视文件加密,尤其是那些涉及敏感数据、技术文档和业务机密的文件。市场上涌现出众多加密软件,而IPGuard与Ping32作为其中的佼佼者,分别在不同的企业中获得了广泛应用。本文将对这两…

胤娲科技:破茧成蝶——具身智能工业机器人引领工业新纪元

想象一下,走进一家未来的工厂,不再是冰冷的机械臂在单调地重复着同样的动作,而是灵活多变的智能机器人, 它们能够“看一遍、学一遍、做一遍”,然后高效地投入到生产中。这样的场景,是否已经让你对未来充满了…

MySQL基本语法、高级语法知识总结以及常用语法案例

MySQL基本语法总结 MySQL是一种广泛使用的关系型数据库管理系统,其基本语法涵盖了数据库和数据表的创建、查询、修改和删除等操作。 一、数据库操作 创建数据库(CREATE DATABASE) 语法:CREATE DATABASE [IF NOT EXISTS] databa…

工业4G路由R10提升物流仓储效率

在当今全球化的商业环境中,物流仓储行业面临着越来越大的压力,需要不断提高效率、降低成本并确保货物的安全与准时交付。面对这些挑战,技术革新成为了推动行业发展的关键力量。工业4G路由R10作为一款集成了边缘计算、数据采集、协议转换、远程…

【FL0012】基于SpringBoot和微信小程序的大学生校园兼职系统

🧑‍💻博主介绍🧑‍💻 全网粉丝10W,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发…

基于JAVA+SpringBoot+Vue的医疗报销系统

基于JAVASpringBootVue的医疗报销系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈喽兄…

【MATLAB源码-第272期】基于matlab的OMP算法的毫米波MIMO通信系统的混合波束成形仿真。

操作环境: MATLAB 2022a 1、算法描述 在现代无线通信系统中,随着频谱资源的日益紧张,毫米波(mmWave)技术成为5G及未来通信系统的重要组成部分。毫米波频段的宽频带提供了远超传统微波频段的频谱资源,能够…

使用LlamaFactory进行模型微调

使用LlamaFactory进行模型微调 简介 论文地址:https://arxiv.org/pdf/2403.13372 仓库地址:https://github.com/hiyouga/LLaMA-Factory/tree/main 名词解释 1. 预训练 (Pre-training, PT) 预训练是指模型在大规模无监督数据集上进行初步训练的过程…

Kafka-初识

一、Kafka是什么? Kafka是一个高度可扩展、弹性、容错和安全的分布式流处理平台,由服务器和客户端组成,通过高性能TCP网络协议进行通信。它可以像消息队列一样生产和消费数据。可以部署在裸机硬件、虚拟机和容器上,也可以部署在本…

使用3080ti运行blip2的

使用3080ti运行blip2的案例 注意!blip2很吃显存,需要大于80GB显存的卡。我最后安装的所有包的版本信息(python 3.9 )以供参考: 首先,我在运行blip2的demo的时候显存用了80G以上,所以大家卡的显存…

VS Code最新版本Retome远程ssh不兼容旧服务器问题

✨✨欢迎来到T_X_Parallel的博客!!       🛰️博客主页:T_X_Parallel       🛰️欢迎关注:👍点赞🙌收藏✍️留言 目录 问题:无法正常使用vscode-remote插件远…

深度优先搜索 - 岛屿最大面积

题目描述 给定一个由 0 和 1 组成的非空二维数组 grid ,用来表示海洋岛屿地图。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水&…

从零开始搭建UVM平台(十二)-加入sequence机制

书接上回: 从零开始搭建UVM平台(一)-只有uvm_driver的验证平台 从零开始搭建UVM平台(二)-加入factory机制 从零开始搭建UVM平台(三)-加入objection机制 从零开始搭建UVM平台(四&…

邮件系统国产化改造: 保障信息安全、提升效率的最佳选择

在当前数字化转型的大背景下,我国政府提出了构建网络强国和数字强国的宏伟蓝图。这一战略的实施,不仅为数字政府的建设提供了坚实的基础,也为政府和企业的数字化升级指明了方向。在这一进程中,邮件系统的国产化改造就显得尤为重要…