Flutter & Dart
Flutter & Dart
https://www.dartlang.org/install
https://flutter.dev/
https://flutter.dev/docs/get-started/install/macos
flutter_macos_v1.2.1-stable.zip & 464 MB
https://storage.googleapis.com/flutter_infra/releases/stable/macos/flutter_macos_v1.2.1-stable.zip
https://flutter.dev/docs/development/tools/sdk/archive
https://flutter.dev/community/china
https://flutter-io.cn/
https://codelabs.flutter-io.cn/
https://codelabs.flutter-io.cn/codelabs/first-flutter-app-pt1-cn/index.html#0
https://classroom.udacity.com/courses/ud905
https://flutter.dev/docs/get-started/install/macos#get-the-flutter-sdk
https://flutter.dev/docs/get-started/install/macos#update-your-path
# pwd
export PATH="$PATH:`pwd`/flutter/bin"
# export PATH="$PATH:[PATH_TO_FLUTTER_GIT_DIRECTORY]/flutter/bin"
# pwd === /Users/xgqfrms-mbp
export PATH="$PATH:/Users/xgqfrms-mbp/Documents/Flutter/flutter/bin"
Flutter 1.2
https://flutter-io.cn/posts/launching-flutter-12-at-mobile-world.html
zsh bug
https://github.com/flutter/flutter/issues/29539#issuecomment-473825598
zsh !== native terminal
.zshrc
!==.bash_profile
$ cat .zshrc
$ vim .zshrc
# flutter PATH & zsh
export PATH="$PATH:/Users/xgqfrms-mbp/Documents/Flutter/flutter/bin"
$ source $HOME/.zshrc
.zshrc
path
current user path
https://mirrors.sjtug.sjtu.edu.cn/#/
rss-parser
import axios from 'axios'
import Parser from 'rss-parser'
import _ from 'lodash'
// The type of the return value of getFeeds()
// for documenting purpose only
// eslint-disable-next-line
function getFeedsResult () {
this.title = 'title of feed'
this.pubDate = new Date()
this.url = 'https://test.com'
}
/**
* @param {string} url
* @fulfill {getFeedsResult[]}
* @reject {Error}
* @return {Promise.<getFeedsResult[]>}
*/
async function getFeeds (url) {
const parser = new Parser()
return parser.parseURL(url)
.then(({items}) => _.map(items, rssItem => ({
title: rssItem.title,
url: rssItem.link,
pubDate: new Date(rssItem.pubDate)
})))
}
/**
*
* @param {string} url
* @return {Promise.<Object.<string, string>>} an object: name => desciption HTML
*/
async function getHelps (url) {
const parser = new Parser()
return parser.parseURL(url)
.then(({items}) => _.fromPairs(_.map(items, item => [item.title, item.content])))
}
// eslint-disable-next-line
function getBackendSummarySingleResult () {
this.name = 'name of this repo'
this.idle = false
this.result = true
this.lastFinished = new Date()
}
/**
* @param {string} url
* @return {Promise.<getBackendSummarySingleResult[]>}
*/
async function getBackendSummary (url) {
return axios.get(url)
.then(({data}) => _.map(data.WorkerStatus, (val, key) => ({
name: key,
idle: val.Idle,
result: val.Result,
lastFinished: new Date(val.LastFinished)
})))
.then(data => _.sortBy(data, 'name'))
}
export {
getFeeds,
getBackendSummary,
getHelps
}
// WEBPACK FOOTER //
// ./src/api/index.js
https://sjtug.org/js/rocket.js
https://github.com/sjtug/sjtug-mirror-frontend
https://github.com/sjtug/lug
var scene, camera, renderer, rocket, fire, mx, my;
var firescale = 1;
var rot_axis = new THREE.Vector3(0, 0, 1);
var trans_axis = new THREE.Vector3(-0.5, 0, 0.8);
var rot_lean = new THREE.Vector3(0, 1, 0);
var axis_c = new THREE.Vector3(0,0,0);
var axis_s = new THREE.Vector3(0,0,0);
var axis_h = (new THREE.Vector3(0,1,0)).applyAxisAngle(rot_axis, -0.02);
var axis_w = (new THREE.Vector3(1,0,0)).applyAxisAngle(rot_axis, -0.02);
var camera_pos = new THREE.Vector3(0, 0, 30);
var current_pos = new THREE.Vector3(0,0,0);
var delta = new THREE.Vector3(0,0,0);
var speedX = 0;
var speedY = 0;
var firel = 0.4;
var firer = 0.2;
var mx = 0;
var my = 0;
var xs = 0;
init();
function init(){
//scene = new THREE.Scene();
var WIDTH = 240;
var HEIGHT = 240;
renderer = new THREE.WebGLRenderer({'antialias':true});
renderer.setSize(WIDTH, HEIGHT);
camera = new THREE.PerspectiveCamera(45, WIDTH/HEIGHT, 0.1, 20000);
camera.position = camera_pos;
camera.lookAt(axis_c);
var loader = new THREE.SceneLoader();
loader.load("/js/rocket.json", function(s){
scene = s.scene;
rocket = s.objects['Rocket'];
fire = s.objects['Fire'];
rocket.rotateOnAxis(rot_axis, 1.508);
rocket.translateOnAxis(trans_axis, -2)
rocket.rotateOnAxis(rot_lean, -0.63);
fire.rotateOnAxis(rot_axis, 1.508);
fire.translateOnAxis(trans_axis, -2)
fire.rotateOnAxis(rot_lean, -0.63);
scene.add(camera);
document.body.onmousemove = function(e){
var w = document.body.clientWidth/2;
mx = w-e.pageX;
if(firel<0.7) my = 300-e.pageY;
else {
mx=mx*0.2+xs;
my=300;
}
}
if (window.DeviceMotionEvent) {
deviceMotionHandler = function(e) {
document.body.onmousemove = null;
var ax = event.accelerationIncludingGravity.x;
var ay = event.accelerationIncludingGravity.y;
var orient = window.orientation;
if (orient==0) {
mx = -ax * 80;
my = -ay * 80;
}
else if (orient==90) {
mx = ay * 80;
my = -ax * 80;
}
else if (orient==-90) {
mx = -ay * 80;
my = -ax * 80;
}
else if (orient==180) {
mx = -ax * 80;
my = ay * 80;
}
}
window.ondevicemotion = function(e) {
var acc = e.acceleration;
if (acc.x != null || acc.y != null || acc.z != null) {
document.body.onmousemove = null;
window.ondevicemotion = deviceMotionHandler;
} else {
window.ondevicemotion = null;
}
}
}
var logo = document.getElementById('logo');
logo.classList.add('ani');
logo.appendChild(renderer.domElement);
var joinLink = document.getElementById('join');
if (joinLink) {
joinLink.onmouseover = function(e){
firel = 0.8;
firer = 0.1;
var w = document.body.clientWidth/2;
xs = w - e.pageX;
if (xs>80) xs=160;
else if (xs<-80) xs=-160;
else xs = 0;
}
joinLink.onmouseout = function(e){
firel = 0.4;
firer = 0.2;
}
} else { // support pages with no join link
firel = 0.4;
firer = 0.2;
}
animate();
});
}
function step(camera) {
if (mx > 1000) mx = 1000;
else if (mx < -1000) mx = -1000;
if (my > 1000) my = 1000
else if (my < -1000) my = -1000;
delta.set(-mx, my, 0).applyAxisAngle(rot_axis, -0.02).sub(current_pos);
if (delta.x>20) delta.x=20;
else if (delta.x<-20) delta.x=-20;
if (delta.y>50) delta.y=50;
else if (delta.y<-50) delta.y=-50;
speedX += delta.x/2000;
speedY += delta.y/8000;
speedX *= 0.95;
speedY *= 0.80;
rocket.rotateOnAxis(rot_axis, speedX);
camera.position.applyAxisAngle(axis_w, speedY);
delta.x *= 0.5;
current_pos.add(delta);
if(firescale>=1) firescale = firel - firer*Math.random();
else firescale = firel + firer*Math.random();
fire.scale.z = firescale;
if (firel>0.7) {
axis_s.set(-Math.random(), -Math.random(), 0);
axis_s.multiplyScalar(0.4);
camera.lookAt(axis_s);
}
else camera.lookAt(axis_c);
}
function animate() {
requestAnimationFrame(animate);
step(camera);
renderer.render(scene, camera);
}
Flutter & Dart的更多相关文章
- [flutter+dart] windows7下开发环境的安装与配置
前言 博主是做嵌入式的,参加工作时间也不久,而且是非科班出身,之前从未接触过移动开发.最近了解到了flutter框架和dart语言,想作为第二语言学习一下,因此会从最基础的环节开始,以此博客作为记录, ...
- Android Gradle Issue - Flutter / Dart
解决 "Minimum supported Gradle version is 4.6. Current version is 3.3." I have a problem wit ...
- 【Flutter 1-2】在 Windows 10下安装Flutter+Dart+Android Studio 配置Flutter开发环境
在 Windows 10下安装Flutter+Dart+Android Studio 配置Flutter开发环境 文章首发地址 配置环境变量 由于部分网站被墙的原因,我们需要先配置Flutter国内镜 ...
- flutter & dart & vs code & bug
flutter & dart & vs code & bug Waiting for another flutter command to release the startu ...
- Flutter & Dart 安装在window系统
一.系统环境 flutter最低要求 1,windows7 SP1 64位版本以上,我的系统就是windows 7 sp1 64bit 2,git for windows ,没有安装的需要到这里下载 ...
- Flutter Dart中的异步
以下内容从官网得到: https://webdev.dartlang.org/articles/performance/event-loop Even-Looper Dart是单线程模型,也就没有了所 ...
- Flutter dart:convert
引用 mport 'dart:convert'; JSON 解码(JSON String->Object) // NOTE: Be sure to use double quotes (&quo ...
- Flutter——Dart Extension扩展方法的使用
dart的extension方法可以给已经存在的类添加新的函数,通过extension我们可以封装一些常用方法,提高开发效率. 例一:扩展String 给string添加一个log打印方法 exten ...
- Flutter Dart List.map() 获取下标
class HomePageState extends State{ final topTitles = ['审批单', '机票列表', '客服']; final topIcons = ['asset ...
随机推荐
- python opencv show图片,debug技巧
debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...
- Python基础(7)——迭代器&生成器
1.列表生成式 [i*2 for i in range(10)] [fun(i) for i in range(10)] 2.生成器 # Author Qian Chenglong #列表生成器 a= ...
- <计算机网络>计算机网络和应用层
1.端系统通过通信链路和分组交换机连接在一起,构成网络.网络和网络之间通过路由器相连,组成了因特网. 2.ISP(Internet Service Provider)因特网服务提供商.端系统通过ISP ...
- webpack4对第三方库css,项目全局css和vue内联css文件提取到单独的文件(二十二)
在讲解提取css之前,我们先看下项目的架构如下结构: ### 目录结构如下: demo1 # 工程名 | |--- dist # 打包后生成的目录文件 | |--- node_modules # 所有 ...
- Skyline中的GDAL
安装Skyline的TerraExplorer Pro软件后,我们很容易在其安装目录中找到这样一些文件: gdal.dll.gdal_csharp.dll.ogr_csharp.dll.osr_csh ...
- 使用Win PE修改其他硬盘中的系统注册表
使用场景:原来装的机械硬盘系统盘为C盘,后来买了个SSD固态硬盘后,进入WinPE系统后,把原来的C盘整个复制到了固态硬盘,然后用BooticeX64.exe工具在UEFI启动中增加SSD固态硬盘中的 ...
- Luogu P3825 [NOI2017]游戏
这道题看上去NPC啊,超级不可做的样子. 我们先分析一下简单的情形:没有\(x\)地图 此时每个地图由于限制掉一种汽车,那么显然只会有两种选择. 再考虑到限制的情况,那么大致做法就很显然了--2-SA ...
- sklearn学习笔记之简单线性回归
简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项.线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误 ...
- python实现微信自动回复机器人
一 简单介绍 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计等功能. 总而言之,可用 ...
- 用PHP山寨一款软件
什么是我国软件工程师引以为豪的能力?山寨.山寨,山寨! 我国程序员的山寨能力是世界一流的.这一点在世界范围内令人闻风丧胆.世界上根本就找不到一款我国工程师不能山寨的软件. 今天,锋哥教大家来山寨一款软 ...