安裝
下載
https://storage.googleapis.com/flutter_infra/releases/stable/macos/flutter_macos_2.0.3-stable.zip
設(shè)置環(huán)境變量
export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
設(shè)置環(huán)境變量
vim ~/.bash_profile
export FLUTTER_HOME=/Users/zhangzw/Documents/workspace-android/flutter
export PATH=FLUTTER_HOME/bin
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
測試
flutter doctor 測試
flutter project
flutter plugins
flutter module
flutter package 的區(qū)別
https://blog.csdn.net/BUG_delete/article/details/105275195
androidstudio
設(shè)置==》plugin==〉 安裝 flutter 然后重啟
創(chuàng)建第一個app
flutter 創(chuàng)建app很慢
build.gradle做以下修改
增加以下內(nèi)容
maven { url "https://storage.flutter-io.cn" }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
可以增常運行了
好的項目快速開發(fā)
https://github.com/iampawan/FlutterExampleApps
試運行官方空項目
在androidstudio里通過創(chuàng)建flutter 工程會有4個模版我們選擇第一個 flutter 工程來創(chuàng)建項目
然后點擊運行
在第一次創(chuàng)建項目的時候會等待很長時間,是在下載相關(guān) 依賴 ios android的.
確保有設(shè)置代理環(huán)境變量.
創(chuàng)建一個搜索框
我們首先會用到的一些類是
row column icon 掏导。 image 盹憎。 text 录别。 button padding
一些體會
優(yōu)勢
1 首先是代碼 不再區(qū)分xml 和 java 類了 ,統(tǒng)一在dart代碼里編寫,
2 結(jié)構(gòu)嵌套一層層 很想 vue的模板 .
3 每次保存就會動態(tài)更新到手機上, 還可以一鍵切換 ios 和android 體驗
4 語法類似于 js+ java 結(jié)合體
劣勢
需要學(xué)習(xí)一門dart語言 ,其實 dart 和java 還是很像的 ,參雜了js 的語法而已
由于每次保存改代碼都會同步到手機上 idea 會有點卡,需要大內(nèi)存.
怎么http請求
創(chuàng)建一個api模塊所有的url都放在這里
創(chuàng)建一個xxxxLoader 繼承Loader
實現(xiàn)Future<list<t>> loadData</list<t>接口
如果要存到數(shù)據(jù)庫里 創(chuàng)建一個XXxxDao
窗口的寬度
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height ,
很奇怪一個問題 赠橙。 跳到一個頁面有延遲 然后迅速的返回了主頁,在點一次就跳過去了, 但是返回主頁要點兩次 而且主頁是一個紅的頁面了
====================================================================================================
E/flutter (17213): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: Looking up a deactivated widget's ancestor is unsafe.
E/flutter (17213): At this point the state of the widget's element tree is no longer stable.
E/flutter (17213): To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling dependOnInheritedWidgetOfExactType() in the widget's didChangeDependencies() method.
E/flutter (17213): #0 Element._debugCheckStateIsActiveForAncestorLookup. <anonymous closure="">(package:flutter/src/widgets/framework.dart:3864:9)</anonymous>
E/flutter (17213): #1 Element._debugCheckStateIsActiveForAncestorLookup (package:flutter/src/widgets/framework.dart:3878:6)
E/flutter (17213): #2 Element.visitAncestorElements (package:flutter/src/widgets/framework.dart:3964:12)
E/flutter (17213): #3 Notification.dispatch (package:flutter/src/widgets/notification_listener.dart:138:13)
E/flutter (17213): #4 ScrollActivity.dispatchScrollEndNotification (package:flutter/src/widgets/scroll_activity.dart:104:63)
E/flutter (17213): #5 ScrollPosition.didEndScroll (package:flutter/src/widgets/scroll_position.dart:877:15)
E/flutter (17213): #6 ScrollPosition.beginActivity (package:flutter/src/widgets/scroll_position.dart:846:9)
E/flutter (17213): #7 ScrollPositionWithSingleContext.beginActivity (package:flutter/src/widgets/scroll_position_with_single_context.dart:114:11)
E/flutter (17213): #8 ScrollPositionWithSingleContext.goIdle (package:flutter/src/widgets/scroll_position_with_single_context.dart:129:5)
E/flutter (17213): #9 ScrollPositionWithSingleContext.goBallistic (package:flutter/src/widgets/scroll_position_with_single_context.dart:148:7)
E/flutter (17213): #10 DrivenScrollActivity._end (package:flutter/src/widgets/scroll_activity.dart:639:14)
E/flutter (17213): #11 _rootRun (dart:async/zone.dart:1346:47)
E/flutter (17213): #12 _CustomZone.run (dart:async/zone.dart:1258:19)
E/flutter (17213): #13 _FutureListener.handleWhenComplete (dart:async/future_impl.dart:176:18)
E/flutter (17213): #14 Future._propagateToListeners.handleWhenCompleteCallback (dart:async/future_impl.dart:674:39)
E/flutter (17213): #15 Future._propagateToListeners (dart:async/future_impl.dart:730:37)
E/flutter (17213): #16 Future._completeWithValue (dart:async/future_impl.dart:539:5)
E/flutter (17213): #17 Future._asyncCompleteWithValue. <anonymous closure="">(dart:async/future_impl.dart:577:7)</anonymous>
E/flutter (17213): #18 _rootRun (dart:async/zone.dart:1354:13)
E/flutter (17213): #19 _CustomZone.run (dart:async/zone.dart:1258:19)
E/flutter (17213): #20 _CustomZone.runGuarded (dart:async/zone.dart:1162:7)
E/flutter (17213): #21 _CustomZone.bindCallbackGuarded. <anonymous closure="">(dart:async/zone.dart:1202:23)</anonymous>
E/flutter (17213): #22 _microtaskLoop (dart:async/schedule_microtask.dart:40:21)
E/flutter (17213): #23 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
E/flutter (17213):
======== Exception caught by animation library =====================================================
Looking up a deactivated widget's ancestor is unsafe.
====================================================================================================
V/AudioManager(17213): querySoundEffectsEnabled...
======== Exception caught by widgets library =======================================================
The following assertion was thrown building _EffectiveTickerMode(effective mode: disabled):
'package:flutter/src/widgets/framework.dart': Failed assertion: line 2060 pos 12: '_elements.contains(element)': is not true.
Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.md
The relevant error-causing widget was:
MaterialApp file:///Users/zhangzw/Documents/workspace-android/flutter_app1/flutter_module/lib/main.dart:48:12
When the exception was thrown, this was the stack:
2 _InactiveElements.remove (package:flutter/src/widgets/framework.dart:2060:12)
3 Element._retakeInactiveElement (package:flutter/src/widgets/framework.dart:3498:30)
... Normal element mounting (4 frames)
7 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3541:14)
8 Element.updateChild (package:flutter/src/widgets/framework.dart:3303:20)
...
====================================================================================================
======== Exception caught by widgets library =======================================================
The following assertion was thrown building _EffectiveTickerMode(effective mode: disabled):
'package:flutter/src/widgets/framework.dart': Failed assertion: line 2060 pos 12: '_elements.contains(element)': is not true.
Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.md
The relevant error-causing widget was:
MaterialApp file:///Users/zhangzw/Documents/workspace-android/flutter_app1/flutter_module/lib/main.dart:48:12
When the exception was thrown, this was the stack:
2 _InactiveElements.remove (package:flutter/src/widgets/framework.dart:2060:12)
3 Element._retakeInactiveElement (package:flutter/src/widgets/framework.dart:3498:30)
... Normal element mounting (4 frames)
7 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3541:14)
8 Element.updateChild (package:flutter/src/widgets/framework.dart:3303:20)
flutter k線圖
http://www.reibang.com/p/3e7cde50258a
https://github.com/gwhcn/flutter_k_chart
https://github.com/GitHubYhb/HBLineChart
https://guides.cocoapods.org/using/getting-started.html#installation