flutter学习之旅(二)

这篇具有很好参考价值的文章主要介绍了flutter学习之旅(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果不知道怎么安装编写可以查看这篇

创建项目

另一个创建方法

flutter create 项目名

flutter学习之旅(二)

热部署

vscode 热部署

vscode很简单:可以通过Debug进行调试
flutter学习之旅(二)

使用flutter查看设备

flutter devices

flutter学习之旅(二)
如图所见我现在用的是windows所以,我们检测不到ios因为

我们看看我的华为手机(HarmonyOS)
flutter学习之旅(二)

Flutter 真机调试

flutter学习之旅(二)

识别到的手机

flutter学习之旅(二)

#连接上手机后直接在项目目录中使用
flutter run

flutter学习之旅(二)

注意: 时间会很久

[!] Gradle threw an error while downloading artifacts from the network.

flutter学习之旅(二)

我下载的版本是gradle-7.4-all.zip

把这个文件放在C:\用户\你的用户名\.gradle里(没有.gradle可以尝试以下几张图来打开)
flutter学习之旅(二)
flutter学习之旅(二)

之后我们进入项目根目录\android\gradle\wrapper\gradle-wrapper.properties
flutter学习之旅(二)

fluuter run

时间会很久
会生成一个项目根目录\build\app\outputs\flutter-apk\app-debug.apk文件
之后说是Installing build\app\outputs\flutter-apk\app.apk...需要在你Anroid手机上确认安装

flutter学习之旅(二)
flutter学习之旅(二)

目录结构

  • andriod:安卓平台相关代码
  • ios: 苹果平台相关代码
  • linux: Linux平台相关代码
  • macos:MacOS平台相关代码
  • windows: Windows平台相关代码
  • lib: Flutter相关代码,主要编写程序的入口文件夹
  • test: 用于存放测试代码
  • pubspec.yaml: 保存了我们项目的所有依赖、版本号和配置信息(重要)
  • analysis_options.yaml: 分析dart语法的文件。老项目生成新项目有警告信息的话可以删除此文件

程序入口

lib/main.dart(主文件)文件中使用flutter必须要引入flutter给我们提供的import 'package:flutter/material.dart';才行。之后就像我们C一样要有一个入口文件void main(){},在入口里面需要调用我们flutter里面提供的函数runApp()

import 'package:flutter/material.dart';

void main(){
  runApp(flutter组件);
}
Center

它可以让我们的内容居中

import 'package:flutter/material.dart';

void main() {
//可以是Center也可以是const Center()
  runApp(const Center());
}

const的好处就是多个相同的实例它可以共享存储空间,重新flutter build不会再次编译const的内容

参数

child: 孩子。可以在里面放入组件

import 'package:flutter/material.dart';

void main() {
  runApp(const Center(
    child: Text(
      "你好flutter",
      textDirection: TextDirection.ltr,
      style: TextStyle(color: Colors.blue, fontSize: 80),
    ),
  ));
}
  • textDirection: 文本方向。ltr:lefet to right(从左向右);rtl:从右向左

Text也是一个常量组件,为什么不加const?你可以理解child:常量组件等同于const array=[1,2,3]

  • style: 文本样式。查看底层是通过TextStyle来进行修饰的
    flutter学习之旅(二)
  • color:通过final Color? color。里面的参数可以是Colors.颜色或者Color.fromRGBO(r, g, b, opacity)来定义
  • fontSize:改变字体大小。传入的是一个double类型的数据

装饰我们的App

MaterialAppScaffold主要是用来装饰App

MaterialApp

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

常用属性

  • home(主页)
  • title(标题)
  • color(颜色)
  • theme(主题)
  • route(路由)
Scaffold

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

主要属性

  • appBar(显示在页面顶部的一个AppBar)
  • body(当前页面的主要内容Widget)
  • drawer(抽屉菜单控件)
import 'package:flutter/material.dart';

void main() {
  runApp(new Scaffold(
    appBar: new AppBar(
      title: const Text("我的应用"),
    ),
    body: new Center(
      child: const Text("Hello"),
    ),
  ));
}

flutter学习之旅(二)

我们需要创建自定义组件(其实全写在runApp中也挺乱的)

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

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

StatelessWidget
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  //实现build()的一个抽象方法
  //Use key in widget constructors: 自定义组件需要有一个key
  const MyApp({Key? key}) : super(key: key);
  
  Widget build(BuildContext context) {
    return const Center(
      child: Text(
        "你好Flutter,我是一个自定义组件",
        textDirection: TextDirection.ltr,
        style: TextStyle(
          color: Color.fromRGBO(255, 255, 255, 1),
          fontSize: 40,
        ),
      ),
    );
  }
}

快捷方式
Awesome Flutter Snippets

statelessW

Container容器组件

html中的<div></div>相似

alignment: 容器里面组件的位置
  • topCenter: 顶部居中对齐
  • topLeft: 顶部右对齐
  • center:水平垂直居中对其
  • centerLeft:垂直居中水平左对齐
  • centerRight: 垂直居中水平右对齐
  • bottomCenter: 底部居中对齐
  • bottomLeft: 底部居左对齐
  • bottomRight: 底部居右对齐
decoration: 装饰容器
decoration:BoxDecoration(color:Colors.blue,border:Border.all(color:Colors.red,width:2.0),borderRadius:BorderRadius.circular((8)),boxShadow:[BoxShadow(color:Colors.blue,offset:Offset(2.0,2.0),blurRadius:10.0,)]););//圆角
gradient:LinearGradlient(colors:[Colors.red,Colors.orange]);//LinearGradlient:背景线性渐变;RadialGradlient:径向渐变
  • margin:外边距&padding:内边距

html-css是一样的

  • transform

Container容易进行一些旋转之类的文章来源地址https://www.toymoban.com/news/detail-432216.html

transform:Matrix4.rotation(0.2)
  • height:容器高度
  • width:容器宽度
  • child: 容器子元素
  • Text组件
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  //实现build()的一个抽象方法
  //Use key in widget constructors: 自定义组件需要有一个key
  const MyApp({Key? key}) : super(key: key);
  
  Widget build(BuildContext context) {
    return Center(
        //Container不是一个常量构造函数,所以要在外部取消const
        child: Container(
      alignment: Alignment.center, //配置Container容器元素的访问
      width: 100,
      height: 100,
      decoration: BoxDecoration(
        //BoxDecoration是一个常量构造函数
        color: Colors.yellow,
        border: Border.all(
          //边线,对应css:border
          color: Colors.red,
          width: 2,
        ),
        borderRadius: BorderRadius.circular(100), //形状,css:border-radius
        boxShadow: [BoxShadow(color: Colors.white, blurRadius: 10.0)],
        //LinearGradient:背景线性渐变; RadialGrandient径向渐变
        gradient:
            const LinearGradient(colors: [Colors.red, Colors.yellow]), //颜色渐变
      ), //阴影,css:box-shadow
    ));

Button样式编写

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    home: Scaffold(
        appBar: AppBar(
          title: const Text("hello world"),
        ),
        body: Column(
          children: const [MyButton()],
        )),
  ));
}

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

  
  Widget build(BuildContext context) {
    return Container(
      width: 200,
      height: 40,
      margin: const EdgeInsets.all(10),
      // margin: const EdgeInsets.fromLTRB(0, 20, 0, 0),
      padding: const EdgeInsets.all(20),
      decoration: const BoxDecoration(color: Colors.blue),
      // transform: Matrix4.translationValues(10, 0, 0), //css: transform。translationValues(位移)
      // transform: Matrix4.rotationZ(0.2), //旋转
      transform: Matrix4.skewY(0.3),
    );
  }
}

Text组件

名称 功能
textAlign 文本对齐方向(center居中,left左对齐,right右对齐)
textDirection 文本方向(ltr从左到右;rtl从右到左)
overflow 文字超出屏幕后的处理方式(clip裁剪,fade渐影,ellopsos省略号)
textScaleFactor 字体显示倍率
maxLines 文字显示最大行数
style 字体样式设置
TextStyle样式
名称 功能
decoration 文字装饰器(noone没有线,lineThrough上划线,underline下划线)
decorationColor 文字装饰线颜色
decorationStyle 文字装饰线风格([dashed,dotted]虚线,double俩根线,solid一根实线,wavy波浪线)
wordSpacing 单词间隙(如果时负值,会让单词变得更紧凑)
letterSpacing 字母间隙(如果时负值,会让单词变得更紧凑)
fontStyle 文字样式(italic斜体,normal正体)
fontSize 文字大小
color 文字颜色
fontWeight 字体粗细(bold粗体,normal正常体)

到了这里,关于flutter学习之旅(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件工具安装遇到bug、报错不知道怎么解决?看这里!

    本文举例了几个常见的软件工具使用问题,文末会提供一些我自己整理和使用的工具资料 。 \\\"在追逐零 Bug 的路上,我们不断学习、改进,更加坚定自己的技术信念。让我们相信,每一个 Bug 都是我们成长的机会。\\\"  1、VMware虚拟机未开启虚拟化 VT-x AMD-V 英特尔 Intel CPU   AMD

    2024年02月21日
    浏览(51)
  • Flink学习之旅:(一)Flink部署安装

            进入Flink官网,点击Downloads         往下滑动就可以看到 Flink 的所有版本了,看自己需要什么版本点击下载即可。         上传至服务器,进行解压 查看进程 jps,正常启动!         启动成功后,访问http://[IP]:8081,可以对集群和任务进行监控管理。         角色

    2024年02月07日
    浏览(36)
  • 数据结构—顺序表(如果想知道顺序表的全部基础知识点,那么只看这一篇就足够了!)

            前言:学习完了C语言的基础知识点之后,我们就需要使用我们所学的知识来进一步对存储在内存中的数据进行操作,这时候我们就需要学习数据结构。而这篇文章为数据结构中顺序表的讲解。 ✨✨✨ 这里是秋刀鱼不做梦的BLOG ✨✨✨ 想要了解更多内容可以访问我的

    2024年04月13日
    浏览(49)
  • Flutter如何知道页面/组件可见?

    在以前项目中,onPageShow和onPageHide由开源框架flutter_boost提供,在此次项目中,创新性的采用了fusion框架,fusion框架同样提供了类似的方法,但在实践中发现,当flutter页面相互replace或者多次pop页面后,onPageShow不会调用,这就导致了诸多bug,于是,需要探索如何了解一个widget

    2024年02月12日
    浏览(30)
  • CSS基础之伪类选择器(如果想知道CSS的伪类选择器知识点,那么只看这一篇就足够了!)

            前言:学习CSS就必须要学习选择器,在之前我们已经学习了基本选择器和复合选择器,但是还有几个选择器没有学习,这篇文章主要讲解伪类选择器。 ✨✨ ✨ 这里是秋刀鱼不做梦的BLOG ✨✨✨ 想要了解更多内容可以访问我的主页 秋刀鱼不做梦-CSDN博客 那么废话不多

    2024年04月17日
    浏览(50)
  • 【Flutter】下载安装Flutter并使用学习dart语言

    安装flutter, 并使用flutter内置的dartSDK学习使用dart语言。 编辑器: Android Studio fluuter 版本 : flutter_windows_3.13.1 内置dartSDK : 3.1.0 dart路径路径: flutter安装路径bincachedart-sdk flutter下载地址 官网的下载描述蛮详细的,直接用就行。 Android Studio 需要到官网下载安装包。 如果你c盘容

    2024年02月09日
    浏览(47)
  • 开发如果没有提供接口文档怎么办

    如果开发没有提供接口文档,测试工程师在进行接口测试时可能会面临一些挑战,但仍然可以采取以下方法来进行测试: 1. 探索性测试: 首先,可以通过尝试各种可能的请求来进行探索性测试。观察API的响应,以了解它的行为和数据结构。这样可以帮助您建立对API的基本理

    2024年01月17日
    浏览(78)
  • 如果unity双击无法打开怎么办

    如果unity引擎双击运行之后,首先你的鼠标光标会出现转圈圈,等待一会儿之后,发现圈圈消失,之后没有给出任何提示。 打开任务管理器,看看unity程序是否在后台运行,然后发现,出现一个叫做unitycrashhandler64的进程。 我之前遇到这个问题也很懵,然后去查阅一下发现很多

    2023年04月09日
    浏览(78)
  • 如果让ChatGPT来写代码他会怎么写

    今天突发奇想想试一下如果让ChatGPT来写51代码会怎么样呢?今天我们就一起来看一下他会怎么写51代码,机器人写出来的代码到底可不可以运行? 在开始之前我们首先让ChatGPT做一个自我介绍吧! 问:  ChatGPT介绍一下自己吧! 答:  当然,我很乐意介绍自己!我是ChatGPT,是

    2024年02月02日
    浏览(39)
  • 如果不小心git reset --hard了怎么恢复代码?

    1 前言 本来是想把commit的存在缓存区的代码删除,再重新commit一遍的,用了 git reset --hard HEAD^ 这个命令后,没想到本地代码退回到初始版本了,修改过的全部不见了。(悔不当初!) 2 解决办法 前提: git上传代码到仓库add、commit、push,代码必须是commit过的才有效,只有add不

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包