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

  1. # pwd
  2. export PATH="$PATH:`pwd`/flutter/bin"
  3. # export PATH="$PATH:[PATH_TO_FLUTTER_GIT_DIRECTORY]/flutter/bin"
  4. # pwd === /Users/xgqfrms-mbp
  5. 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


  1. $ cat .zshrc
  2. $ vim .zshrc
  3. # flutter PATH & zsh
  4. export PATH="$PATH:/Users/xgqfrms-mbp/Documents/Flutter/flutter/bin"
  5. $ source $HOME/.zshrc

.zshrc path

current user path


https://mirrors.sjtug.sjtu.edu.cn/#/

https://github.com/sjtug

rss-parser

  1. import axios from 'axios'
  2. import Parser from 'rss-parser'
  3. import _ from 'lodash'
  4. // The type of the return value of getFeeds()
  5. // for documenting purpose only
  6. // eslint-disable-next-line
  7. function getFeedsResult () {
  8. this.title = 'title of feed'
  9. this.pubDate = new Date()
  10. this.url = 'https://test.com'
  11. }
  12. /**
  13. * @param {string} url
  14. * @fulfill {getFeedsResult[]}
  15. * @reject {Error}
  16. * @return {Promise.<getFeedsResult[]>}
  17. */
  18. async function getFeeds (url) {
  19. const parser = new Parser()
  20. return parser.parseURL(url)
  21. .then(({items}) => _.map(items, rssItem => ({
  22. title: rssItem.title,
  23. url: rssItem.link,
  24. pubDate: new Date(rssItem.pubDate)
  25. })))
  26. }
  27. /**
  28. *
  29. * @param {string} url
  30. * @return {Promise.<Object.<string, string>>} an object: name => desciption HTML
  31. */
  32. async function getHelps (url) {
  33. const parser = new Parser()
  34. return parser.parseURL(url)
  35. .then(({items}) => _.fromPairs(_.map(items, item => [item.title, item.content])))
  36. }
  37. // eslint-disable-next-line
  38. function getBackendSummarySingleResult () {
  39. this.name = 'name of this repo'
  40. this.idle = false
  41. this.result = true
  42. this.lastFinished = new Date()
  43. }
  44. /**
  45. * @param {string} url
  46. * @return {Promise.<getBackendSummarySingleResult[]>}
  47. */
  48. async function getBackendSummary (url) {
  49. return axios.get(url)
  50. .then(({data}) => _.map(data.WorkerStatus, (val, key) => ({
  51. name: key,
  52. idle: val.Idle,
  53. result: val.Result,
  54. lastFinished: new Date(val.LastFinished)
  55. })))
  56. .then(data => _.sortBy(data, 'name'))
  57. }
  58. export {
  59. getFeeds,
  60. getBackendSummary,
  61. getHelps
  62. }
  63. // WEBPACK FOOTER //
  64. // ./src/api/index.js

https://sjtug.org/js/rocket.js

https://github.com/sjtug/sjtug-mirror-frontend

https://github.com/sjtug/lug


  1. var scene, camera, renderer, rocket, fire, mx, my;
  2. var firescale = 1;
  3. var rot_axis = new THREE.Vector3(0, 0, 1);
  4. var trans_axis = new THREE.Vector3(-0.5, 0, 0.8);
  5. var rot_lean = new THREE.Vector3(0, 1, 0);
  6. var axis_c = new THREE.Vector3(0,0,0);
  7. var axis_s = new THREE.Vector3(0,0,0);
  8. var axis_h = (new THREE.Vector3(0,1,0)).applyAxisAngle(rot_axis, -0.02);
  9. var axis_w = (new THREE.Vector3(1,0,0)).applyAxisAngle(rot_axis, -0.02);
  10. var camera_pos = new THREE.Vector3(0, 0, 30);
  11. var current_pos = new THREE.Vector3(0,0,0);
  12. var delta = new THREE.Vector3(0,0,0);
  13. var speedX = 0;
  14. var speedY = 0;
  15. var firel = 0.4;
  16. var firer = 0.2;
  17. var mx = 0;
  18. var my = 0;
  19. var xs = 0;
  20. init();
  21. function init(){
  22. //scene = new THREE.Scene();
  23. var WIDTH = 240;
  24. var HEIGHT = 240;
  25. renderer = new THREE.WebGLRenderer({'antialias':true});
  26. renderer.setSize(WIDTH, HEIGHT);
  27. camera = new THREE.PerspectiveCamera(45, WIDTH/HEIGHT, 0.1, 20000);
  28. camera.position = camera_pos;
  29. camera.lookAt(axis_c);
  30. var loader = new THREE.SceneLoader();
  31. loader.load("/js/rocket.json", function(s){
  32. scene = s.scene;
  33. rocket = s.objects['Rocket'];
  34. fire = s.objects['Fire'];
  35. rocket.rotateOnAxis(rot_axis, 1.508);
  36. rocket.translateOnAxis(trans_axis, -2)
  37. rocket.rotateOnAxis(rot_lean, -0.63);
  38. fire.rotateOnAxis(rot_axis, 1.508);
  39. fire.translateOnAxis(trans_axis, -2)
  40. fire.rotateOnAxis(rot_lean, -0.63);
  41. scene.add(camera);
  42. document.body.onmousemove = function(e){
  43. var w = document.body.clientWidth/2;
  44. mx = w-e.pageX;
  45. if(firel<0.7) my = 300-e.pageY;
  46. else {
  47. mx=mx*0.2+xs;
  48. my=300;
  49. }
  50. }
  51. if (window.DeviceMotionEvent) {
  52. deviceMotionHandler = function(e) {
  53. document.body.onmousemove = null;
  54. var ax = event.accelerationIncludingGravity.x;
  55. var ay = event.accelerationIncludingGravity.y;
  56. var orient = window.orientation;
  57. if (orient==0) {
  58. mx = -ax * 80;
  59. my = -ay * 80;
  60. }
  61. else if (orient==90) {
  62. mx = ay * 80;
  63. my = -ax * 80;
  64. }
  65. else if (orient==-90) {
  66. mx = -ay * 80;
  67. my = -ax * 80;
  68. }
  69. else if (orient==180) {
  70. mx = -ax * 80;
  71. my = ay * 80;
  72. }
  73. }
  74. window.ondevicemotion = function(e) {
  75. var acc = e.acceleration;
  76. if (acc.x != null || acc.y != null || acc.z != null) {
  77. document.body.onmousemove = null;
  78. window.ondevicemotion = deviceMotionHandler;
  79. } else {
  80. window.ondevicemotion = null;
  81. }
  82. }
  83. }
  84. var logo = document.getElementById('logo');
  85. logo.classList.add('ani');
  86. logo.appendChild(renderer.domElement);
  87. var joinLink = document.getElementById('join');
  88. if (joinLink) {
  89. joinLink.onmouseover = function(e){
  90. firel = 0.8;
  91. firer = 0.1;
  92. var w = document.body.clientWidth/2;
  93. xs = w - e.pageX;
  94. if (xs>80) xs=160;
  95. else if (xs<-80) xs=-160;
  96. else xs = 0;
  97. }
  98. joinLink.onmouseout = function(e){
  99. firel = 0.4;
  100. firer = 0.2;
  101. }
  102. } else { // support pages with no join link
  103. firel = 0.4;
  104. firer = 0.2;
  105. }
  106. animate();
  107. });
  108. }
  109. function step(camera) {
  110. if (mx > 1000) mx = 1000;
  111. else if (mx < -1000) mx = -1000;
  112. if (my > 1000) my = 1000
  113. else if (my < -1000) my = -1000;
  114. delta.set(-mx, my, 0).applyAxisAngle(rot_axis, -0.02).sub(current_pos);
  115. if (delta.x>20) delta.x=20;
  116. else if (delta.x<-20) delta.x=-20;
  117. if (delta.y>50) delta.y=50;
  118. else if (delta.y<-50) delta.y=-50;
  119. speedX += delta.x/2000;
  120. speedY += delta.y/8000;
  121. speedX *= 0.95;
  122. speedY *= 0.80;
  123. rocket.rotateOnAxis(rot_axis, speedX);
  124. camera.position.applyAxisAngle(axis_w, speedY);
  125. delta.x *= 0.5;
  126. current_pos.add(delta);
  127. if(firescale>=1) firescale = firel - firer*Math.random();
  128. else firescale = firel + firer*Math.random();
  129. fire.scale.z = firescale;
  130. if (firel>0.7) {
  131. axis_s.set(-Math.random(), -Math.random(), 0);
  132. axis_s.multiplyScalar(0.4);
  133. camera.lookAt(axis_s);
  134. }
  135. else camera.lookAt(axis_c);
  136. }
  137. function animate() {
  138. requestAnimationFrame(animate);
  139. step(camera);
  140. renderer.render(scene, camera);
  141. }

Flutter & Dart的更多相关文章

  1. [flutter+dart] windows7下开发环境的安装与配置

    前言 博主是做嵌入式的,参加工作时间也不久,而且是非科班出身,之前从未接触过移动开发.最近了解到了flutter框架和dart语言,想作为第二语言学习一下,因此会从最基础的环节开始,以此博客作为记录, ...

  2. Android Gradle Issue - Flutter / Dart

    解决 "Minimum supported Gradle version is 4.6. Current version is 3.3." I have a problem wit ...

  3. 【Flutter 1-2】在 Windows 10下安装Flutter+Dart+Android Studio 配置Flutter开发环境

    在 Windows 10下安装Flutter+Dart+Android Studio 配置Flutter开发环境 文章首发地址 配置环境变量 由于部分网站被墙的原因,我们需要先配置Flutter国内镜 ...

  4. flutter & dart & vs code & bug

    flutter & dart & vs code & bug Waiting for another flutter command to release the startu ...

  5. Flutter & Dart 安装在window系统

    一.系统环境 flutter最低要求 1,windows7 SP1 64位版本以上,我的系统就是windows 7 sp1 64bit 2,git for windows ,没有安装的需要到这里下载  ...

  6. Flutter Dart中的异步

    以下内容从官网得到: https://webdev.dartlang.org/articles/performance/event-loop Even-Looper Dart是单线程模型,也就没有了所 ...

  7. Flutter dart:convert

    引用 mport 'dart:convert'; JSON 解码(JSON String->Object) // NOTE: Be sure to use double quotes (&quo ...

  8. Flutter——Dart Extension扩展方法的使用

    dart的extension方法可以给已经存在的类添加新的函数,通过extension我们可以封装一些常用方法,提高开发效率. 例一:扩展String 给string添加一个log打印方法 exten ...

  9. Flutter Dart List.map() 获取下标

    class HomePageState extends State{ final topTitles = ['审批单', '机票列表', '客服']; final topIcons = ['asset ...

随机推荐

  1. 关于html的a标签的target="__blank "的安全漏洞问题

    使用场景:最近项目中使用一个a标签的 target="__blank "链接跳转 页面,打开一个新的 pdf文件(或者外部的一个网页),然后在chrome浏览器中快速的滑动的时候, ...

  2. PAT A1075 PAT Judge (25 分)——结构体初始化,排序

    The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...

  3. B-Tree外存数据结构 _(B 树)第二部分

    2. B 树 B 树是为了磁盘或其它存储设备而设计的一种多叉(相对于二叉,B树每个内结点有多个分支,即多叉)平衡查找树 一棵B树,一棵关键字为英语中辅音字母的B树,现在要从树中查找字母R(包含n[x] ...

  4. Android学习之基础知识四-Activity活动6讲(体验Activity的生命周期)

    一.体验活动的生命周期的执行 代码组成: 1.三个Java类:MainActivity.java.NormalActivity.java.DialogActivity.java 2.三个布局文件:ac ...

  5. Saltstack学习之二:target与模块方法的运行

    对象的管理 saltstack系统中我们的管理对象叫做target,在master上我们可以采用不同的target去管理不同的minion,这些target都是通过去管理和匹配minion的id来做的 ...

  6. curl命令行

    curl命令行--强大的工具.通过各种参数,支持各种方式. 写几个常用的命令: 请求到的网站html curl http://www.baidu.com 比如想在命令行上请求一个接口,post过去几个 ...

  7. 初始化应用程序数据ng-init指令

    ng-init指令初始化应用程序数据. 如果我们想给文本框一个初化的值: <div ng-app="" ng-init="Name='Leo'"> ...

  8. 浅淡volatile原理

    Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性” Volatile的官方定义 Java语言规范第三版中对volatile的定义如下: java编程语言允 ...

  9. Luogu P1129 [ZJOI2007]矩阵游戏

    题目意思还是比较直观的,而且这个建模的套路也很明显. 我们首先考虑从主对角线可以转移到哪些状态. 由于每一次操作都不会把同一行(列)的黑色方块分开.因此我们发现: 只要找出\(n\)个黑色棋子,让它们 ...

  10. [Spark][python]从 web log 中提取出 UserID 作为key 值,形成新的 RDD

    针对RDD, 使用 keyBy 来构筑 key-line 对: [training@localhost ~]$ cat webs.log 56.31.230.188 - 90700 "GET ...