当前位置: 首页 > news >正文

Flutter技术学习

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

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

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

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

 

http://www.lryc.cn/news/458181.html

相关文章:

  • Kubernetes网络通讯模式深度解析
  • SBTI科学碳目标是什么?有什么重要意义
  • 英特尔新旗舰 CPU 将运行更凉爽、更高效,适合 PC 游戏
  • MySQL 启动失败 (code=exited, status=1/FAILURE) 异常解决方案
  • 通信工程学习:什么是RIP路由信息协议
  • SQL调优指南与高级技巧:打造高效数据库查询
  • 实惠又好用的云手机推荐【高性价比云手机盘点】
  • Pear Admin Flask Master开启步骤
  • 知识图谱入门——8: KG开发常见数据格式:OWL、RDF、XML、GraphML、JSON、CSV。
  • 离线使用k8s部署项目
  • 【CF2021E】Digital Village(All Version)
  • [C++]使用纯opencv部署yolov11目标检测onnx模型
  • 【Golang】Go 语言中的 time 包详解:全面掌握时间处理与应用
  • MySQL联合索引、索引下推Demo
  • linux上复制命令cp的常见用法-ubuntu
  • R语言绘制气泡图
  • c++ sparsetable 模版
  • 创建线程池和封装锁
  • 易图讯军用VR三维电子沙盘系统
  • LeetCode讲解篇之70. 爬楼梯
  • 论文写作不再难,论文初稿快速成型法!
  • linux系统,监控进程运行状态并自动重启崩溃后的进程的多种方法
  • 【JavaEE初阶】深入理解不同锁的意义,synchronized的加锁过程理解以及CAS的原子性实现(面试经典题);
  • 详解Redis分布式锁在SpringBoot的@Async方法中没锁住的坑
  • 怎么做接口自动化测试
  • 网络编程(18)——使用asio协程实现并发服务器
  • Koa2项目实战2(路由管理、项目结构优化)
  • 决战Linux操作系统
  • OceanBase 3.2.2 数据库问题处理记录
  • HCIP--以太网交换安全(二)端口安全