参考资料地址1:pan.baidu.com/s/1j35W30a7… 提取码:5o3h 参考资料地址2:pan.baidu.com/s/1Iwj10AL7… 提取码:0n8x
Flutter组件采用现代响应式框架构建,这是从React中获得的灵感,中心思想是用组件(widget)构建你的UI。 组件描述了在给定其当前配置和状态时他们显示的样子。当组件状态改变,组件会重构它的描述(description),Flutter 会对比之前的描述, 以确定底层渲染树从当前状态转换到下一个状态所需要的最小更改。
1、环境搭建 Flutter 的环境搭建十分省心,特别对应 Android 开发者而言,只是在 Android Stuido 上安装插件,并到 GitHub Clone Flutter 项目到本地之后执行 flutter doctor 命令就可以完成配置,其实中文网的搭建Futter开发环境 已经很贴心详细,从平台指引开始安装基本都不会遇到问题。
Flutter 之 Windows 环境搭建 在 Windows 下,搭建 Flutter 运行的 Android 的环境。 操作系统 操作系统: Windows 7 或更高版本 (64-bit) 硬盘空间 磁盘空间: 400 MB ( 不包括 Android Studio 的磁盘空间) Git Flutter 依赖 Git 命令行工具 如果未安装 Git for Windows,请先安装; 在 VS Code 中,安装 flutter 插件 安装完成 VS Code 后,在 VS Code 中安装 flutter 插件。操作步骤: Extension => 搜索框中搜 flutter => 安装 Flutter 插件
验证 安装完成后,重新打开命令行(win+r 然后输入 cmd 回车),输入 java -version,然后回车,验证安装 是否成功(看到版本号,说明 JDK 安装成功)。
Dart语言下的Flutter 在跨平台开领域被 JS 一统天下的今天,Dart 语言的出现无疑是一股清流。作为后来者,Dart语言有着不少 Java、Kotlin 和 JS 的影子,所以对于 Android 原生开发者、前端开发者而言无疑是非常友好。
新建第一个项目 File ---- New ---- New Flutter Project ---Flutter Project 原生安卓 有 Activity Fragment 各种View Flutter 你可以把所有可视化的都理解为Widget 首先看下默认的工程 切换的Project试图
Flutter 的主要配置都在pubspec.yaml
Yam是一种缩进格式的配置方式,要比较注意空格
切换到安卓试图 看下main.dart的内容
接收移动端提交的注册请求,我们需要用表单类来封装数据,所以创建RegisterForm.java类。 package com.example.emos.wx.controller.form;
import io.swagger.annotations.ApiModel; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern;
@Data @ApiModel public class RegisterForm { @NotBlank(message = "注册码不能为空") @Pattern(regexp = "^[0-9]{6}$",message = "注册码必须是6位数字") private String registerCode;
@NotBlank(message = "微信临时授权不能为空")
private String code;
@NotBlank(message = "昵称不能为空")
private String nickname;
@NotBlank(message = "头像不能为空")
private String photo;
}
如果移动端每次发出Ajax,都要做这么多的判断,我们的重复性劳动太多了。所以尽可能的把Ajax封装起来,减少重复性的劳动。 Vue.prototype.ajax = function(url, method, data, fun) { uni.request({ "url": url, "method": method, "header": { token: uni.getStorageSync('token') }, "data": data, success: function(resp) { if (resp.statusCode == 401) { uni.redirectTo({ url: '../login/login' }); } else if (resp.statusCode == 200 && resp.data.code == 200) { let data = resp.data if (data.hasOwnProperty("token")) { console.log(resp.data) let token = data.token uni.setStorageSync("token", token) } fun(resp) } else { uni.showToast({ icon: 'none', title: resp.data }); } } }); }