flutter 記錄

第2節(jié)

//安裝flutter
git clone https://github.com/flutter/flutter.git
ls ~/.bash_profile
touch ~/.bash_profile
source ~/.bash_profile
vim ~/.bash_profile
/*
//延用系統(tǒng)配置
if [ -f /etc/bash_profile ]; then
./etc/bash_profile
fi
//鏡像地址
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
//路徑
export PATH="$PATH:~/Downloads/flutter/bin"
*/
flutter -v

//修改權(quán)限
chmod 777
//查看權(quán)限
ls -l

罢洲。文件是隱藏文件
以前默認(rèn)bash(液兽。bash_profile)诽俯,現(xiàn)在zsh(吐辙。zshrc)
//切換命令行
//shell
chsh -s
chsh -l

shell
vi 修改文件

iOS有每個(gè)環(huán)境對應(yīng)的路徑 config里的路徑是絕對路徑著洼,很多地方要用到所以是絕對路徑

echo $PATH

which flutter

flutter doctor

flutter precache

flutter -v

flutter run
flutter run -d 'iPhone X'

flutter create fluter_Demo

跑不起來卡死,清緩存
rm flutter/bin.cache/lockfile

as快捷
common+ {} 光標(biāo)的上下一個(gè)位置
common+络断。 折疊代碼
common+shift+'-' 折疊代碼

as編譯的時(shí)候會(huì)自動(dòng)修改xcconfig配置文件路徑

第3節(jié) 布局與狀態(tài)管理

默認(rèn)寫法
class base_widgetTextDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(//
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: Text('title'),
),
body: ContainerDemo(),
),
theme: ThemeData(//主題
primaryColor: Colors.blue,
primarySwatch: Colors.yellow,//統(tǒng)一標(biāo)題顏色
),
);
}
}

text文字
overflow超出顯示

RichText富文本尖啡,TextSpan富文本文字

Container 容器
SizedBox(height: 10),//換行占位

alignment -1,-1左上角
橫row,縱column,stack中間堆疊

//主軸與交叉軸跟 row和column有關(guān) 他兩相反
/*

  • 關(guān)于主軸:mainAxisAlignment
  • spaceBetween 剩下的空間平均分布到小部件之間 1??2??2??1
  • spaceAround 剩下的空間平均分布到小部件的周圍 ??1??1??
  • spaceEvenly 剩下的空間和小部件一起平均分布 1??1??1??1
  • */

交叉軸:crossAxisAlignment
/*

  • 交叉軸:crossAxisAlignment;主軸不影響交叉軸布局
  • start上對齊摧玫,end下對齊
    *baseline必須要textBaseline
  • // alphabetic 英文字符 //ideographic 中文字符 第一行中文底部對齊
  • */

Expanded 填充式布局驾讲,主軸不留間隙的填充, 主軸設(shè)置和長度沒有意義

Positioned 相對Stack容器最值(左右最寬席赂,上下最長),相對布局时迫,上下左右對齊 = Container

AspectRatio 寬高比例布局 aspectRatio

第4節(jié) 項(xiàng)目實(shí)戰(zhàn)-項(xiàng)目搭建&發(fā)現(xiàn)界面

floatingActionButton懸浮按鈕
BottomNavigationBar tabar (ixedColor: Colors.green,//選擇顏色selectedFontSize: 12.0, selectedFontSize: 12.0,//選擇字體大小
ThemeData(highlightColor: Color.fromRGBO(1, 0, 0, 0.0),//透明splashColor: Color.fromRGBO(1, 0, 0, 0.0),//水波紋

替換啟動(dòng)和icon iOS 一樣的 安卓 android/app/src/main/res/ 不能用大寫字母用下劃線颅停,圖片拖進(jìn)去會(huì)沒了,x是2倍掠拳,h1.5癞揉,m1 AndroidManifest.xml 修改圖片名
安卓被鎖住要修改鏡像 gradle assembleDebug 報(bào)錯(cuò)
啟動(dòng)圖片launch_background
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/app_icon" />
</item>
安卓不用加圖片后綴名,加了有問題

image圖片配置
assets:

  • 文件夾/
    ’文件夾/圖片名‘

//以下三個(gè)為了安卓
centerTitle: true,//去掉 安卓切換app會(huì)有文字
title: Text(
'發(fā)現(xiàn)',
),
elevation: 0.0,//去掉 安卓底部邊欄

MediaQuery.removePadding(//去掉劉耗缗罚空隙

margin 外邊距喊熟,定位子部件,padding 內(nèi)邊距姐刁,父部件

二分芥牌,或多分布局思維 左右/上下 兩塊

decoration: BoxDecoration(//裝飾器,設(shè)置圓角
color: Colors.blue,
borderRadius: BorderRadius.circular(10.0),
image: DecorationImage(
image: AssetImage('images/Hank.png'), fit: BoxFit.cover),//填充
),

width: MediaQuery.of(context).size.width,//獲取屏幕寬度

ListView.builder(重用機(jī)制

Container(
height: 0.5,
color: WeChatThemeColor,
child: Row(//去掉邊
children: <Widget>[
Container(
width: 50,
color: Colors.white,
)
],
),

Container(
color: WeChatThemeColor,包裝一下聂使,設(shè)一下listview背景色
child: ListView.builder(
controller: _scrollController,
itemCount: _listDatas.length + _headerData.length,
itemBuilder: _itemForRow,
)), //列表
},
), //

//鏈?zhǔn)骄幊?_listDatas..addAll(datas)..addAll(datas);

// _listDatas.addAll(datas);
// _listDatas.addAll(datas);

//排序! 首字母排序
_listDatas.sort((Friends a, Friends b) {
  return a.indexLetter.compareTo(b.indexLetter);
});

index思路:第一個(gè)必定需要字母頭壁拉,從第二個(gè)開始判斷indexLetter跟前一個(gè)一樣就不顯示

iOS打包谬俄,app app.framework(flutter代碼,字節(jié)碼弃理,二進(jìn)制流)/flutter.framework(flutter引擎)

y ~/ itemHeight //取整

_scrollController 添加滾動(dòng)動(dòng)畫

indexbar控件
1.創(chuàng)建column控件溃论,加scroview讓它可以滾動(dòng)
2.點(diǎn)擊拖拽手勢(加滾動(dòng)動(dòng)畫,用控件的坐標(biāo)算出是第幾個(gè))
3.增加控件
4痘昌;存儲(chǔ)高度钥勋,滾動(dòng)的時(shí)候直接取

更新代碼庫 flutter pub get
flutter packages get => flutter pub get
代碼網(wǎng)站 https://pub.dev

import 'package:http/http.dart' as http; //重命名為http

配置允許http

//Map轉(zhuǎn)Json

// final chatJson = json.encode(chat);
// print(chatJson);
//Json轉(zhuǎn)Map
// final newChat = json.decode(chatJson);
// print(newChat is Map);

  • */

const Chat({this.name, this.message, this.imageUrl});//必須創(chuàng)建新對象
factory Chat.fromJson(Map json) {//工廠構(gòu)造函數(shù):返回任何對象,已有的對象(單例)辆苔,null算灸,新建的
return Chat(
name: json['name'],
message: json['message'],
imageUrl: json['imageUrl'],
);
}

渲染機(jī)制,不在界面上就沒有了姑子『跣觯可以刻意去保存

flutter閉包,就是一個(gè)對象

超時(shí)了數(shù)據(jù)還會(huì)來

dart 單線程語音

//耗時(shí)操作
//1.后面的操作必須是異步才能用await修飾
//2.當(dāng)前行數(shù)也必須是異步函數(shù) async

getData() async { Future((){//閑時(shí)操作).then(value) {}.catchError(errorFunc){}.whenComplete(() { print('完成了!');}); }//先error再then error也會(huì)掉then,完成一定會(huì)執(zhí)行

Future有一個(gè)執(zhí)行隊(duì)列街佑。同級(jí)then比Future隊(duì)列任務(wù)級(jí)別高

then函數(shù)拋異常會(huì)直接到下一個(gè)catchError函數(shù)

//隊(duì)列
void testFuture() async {
//同級(jí) then比Future隊(duì)列任務(wù)級(jí)別高
Future(() {
sleep(Duration(seconds: 2));
return '任務(wù)1';
}).then((value) {
print('value結(jié)束'); throw Exception('Error'); return 'value任務(wù)2';
}).then((value) {
print('value結(jié)束'); return 'value任務(wù)3';
}).catchError((e)=>print('結(jié)束')).then((value) {
print('value 4結(jié)束'); throw Exception('Error2'); return 'value任務(wù)4';
}).catchError((e)=>print('結(jié)束2'));//then函數(shù)拋異常會(huì)直接到下一個(gè)catchError函數(shù)
print('任務(wù)添加完畢');
}

//微任務(wù)scheduleMicrotask高于Future

異步編程 https://www.cnblogs.com/lxlx1798/p/11126564.html

多線程 Isolate

用端口監(jiān)聽谢翎,收發(fā)消息

異步操作返回都是futuer

compute 多線程,Isolate的封裝

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沐旨,一起剝皮案震驚了整個(gè)濱河市森逮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磁携,老刑警劉巖褒侧,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谊迄,居然都是意外死亡闷供,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門统诺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歪脏,“玉大人,你說我怎么就攤上這事粮呢⌒鍪В” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵啄寡,是天一觀的道長豪硅。 經(jīng)常有香客問我,道長挺物,這世上最難降的妖魔是什么懒浮? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮识藤,結(jié)果婚禮上嵌溢,老公的妹妹穿的比我還像新娘眯牧。我一直安慰自己,他們只是感情好赖草,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布学少。 她就那樣靜靜地躺著,像睡著了一般秧骑。 火紅的嫁衣襯著肌膚如雪版确。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天乎折,我揣著相機(jī)與錄音绒疗,去河邊找鬼。 笑死骂澄,一個(gè)胖子當(dāng)著我的面吹牛吓蘑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坟冲,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼磨镶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了健提?” 一聲冷哼從身側(cè)響起琳猫,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎私痹,沒想到半個(gè)月后脐嫂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡紊遵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年账千,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暗膜。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匀奏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桦山,到底是詐尸還是另有隱情,我是刑警寧澤醋旦,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布恒水,位于F島的核電站,受9級(jí)特大地震影響饲齐,放射性物質(zhì)發(fā)生泄漏钉凌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一捂人、第九天 我趴在偏房一處隱蔽的房頂上張望御雕。 院中可真熱鬧矢沿,春花似錦、人聲如沸酸纲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闽坡。三九已至栽惶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疾嗅,已是汗流浹背外厂。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留代承,地道東北人汁蝶。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像论悴,于是被迫代替她去往敵國和親掖棉。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容