flutter 學習零碎知識點01


1.Expanded組件 占滿可用空間 -----可以到達類似flex布局中  第一列占用大量空間,所以它必須包裝在Expanded widget中。

寫死的高度改成Expanded自動撐滿屏幕如果還是不能撐滿試試加上flex:1的屬性

Expanded expands its child to fill the available space
--Using an Expanded widget makes a child of a Row, Column, or Flex expand to fill the available space in the main axis (e.g., horizontally for a Row or vertically for a Column). If multiple children are expanded, the available space is divided among them according to the flex factor. 

2.如何改變text組件的高度:可以直接給height (單位感覺像字體單位)或者外面包一個容器

3.Text組件中文本居中 textAlign: TextAlign.center,

4.Container如果不設置寬度 寬度則由內容撐起了 背景色設置 color: Colors.pink,
無法設置背景色的組件 可以給他包一個Container容器再設置
邊框屬於修飾的屬性需要在decoration中定義
5.使用Stack來組織需要重疊的widget。widget可以完全或部分重疊底部widget。類似於css中的

6.DefaultTextStyle.merge可以允許您創建一個默認的文本樣式,該樣式會被其
     // 所有的子節點繼承

7.什么是無狀態組件、有狀態組件?

1)如果用戶與widget交互,widget會發生變化,那么它就是有狀態的.----
stateless widget 沒有內部狀態. Icon、 IconButton, 和Text 都是無狀態widget, 他們都是 StatelessWidget的子類。
它不依賴於除了傳入的數據以外任何其他數據,意味着改變傳入其構造函數的參數是改變其顯示的唯一方式

2)stateful widget 是動態的. 用戶可以和其交互

如果動態組件中的變量有變化請外面套一個setState(() { _favoriteCount -= 1; }

------>無狀態組件類似react中的純組件

無狀態組件里面child居然可以有狀態組件。。。。。widget管理自己的狀態時

 

8.flutter傳遞參數到子組件時,參數要給類型,只傳值會提示少參數類型Too many positional arguments: 0 expected, but 1 found.

9.Future類型的函數類似於js中的promise 返回值可以使用then

10.拿到后台接口的數據后如果像js中通過遍歷、屬性訪問等方式使用數據

方法1:as List).cast();

方法2:建立數據模型

var data=json.decode(data.toString());
List<Map> swiperDataList = (data['data']['slides'] as List).cast(); // 頂部輪播組件數

var data = json.decode(val.toString());
1   list = (data['data'] as List).cast(); //cast方式 訪問字段屬性是使用中括號 item['presentPrice']  model.formJson方式使用點符號  item.presentPrice ------->2中屬性訪問一種不行,就換一種
2  GoodsListModel goodsList = GoodsListModel.fromJson(data);

11.dart中map----->js中的對象{},dart中list---->js中的數組  [{},{},{}] : list中的map
12.動態創建一個List<Widget> 
             children: str.split("")
                 //每一個字母都用一個Text顯示,字體為原來的兩倍
                 .map((c) => Text(c, textScaleFactor: 2.0,))
                 .toList(),
13.dart中 變量設置默認值
?. 運算符在左邊為null的情況下會阻斷右邊的調用,?? 運算符主要作用是在左側表達式為null時為其設置默認值。

child: Text(text ?? '加載中...')),


14.反序列化(json字符串->對象)

1)、什么是序列化?為什么要序列化?

Java中 序列化就是指將對象轉換為字節序列的過程,而反序列化則是只將字節序列轉換成目標對象的過程。


15使用dart:ui包里的window中的方法來獲取屏幕寬高,它不受context限制,其實,MediaQuery的源碼就會發現其獲取屏幕寬高,最終還是調用的window方法中的方法的

16.UI提供的顏色值如何快速在flutter使用 16進制顏色#2D4ED1
#2D4ED1 ------>Color(0xff2D4ED1),

17.itemBuilder一般都有根據一個固定模板產生一系列子元素

18.StatefulWidget 組件接受參數xxx的時候需要加前綴 widget  widget.xxx

19.ListView 作為整個頁面的根節點的唯一子元素時,可以不加高度,但是如果有兄弟元素時,必須加高度,否則界面無效

20.TextField 的prefixIcon圖標寬度最小值小到一定長度,就不會再小了,通過包一個Padding或者Container組件使用padding屬性擠小圖標尺寸

21.Row組件子元素2端對其: mainAxisAlignment:MainAxisAlignment.spaceBetween,

22.去掉AppBar下面的陰影elevation: 0,  appBar: AppBar(title: Text('登錄頁面',style: TextStyle(color: Colors.white),),elevation: 0,),

23.Container設置最小寬度constraints : ---場景:有撐滿屏幕的背景圖的容器中放2個輸入框,容器高度由子元素撐起,但高度太小導致背景圖顯示不完整,
     Container(
                   constraints: BoxConstraints(minHeight: 800),

24.Expanded(撐滿空間)不能放在SingleChildScrollView(空間不夠滾動)里面會報錯


開發、調試、環境、資源類

1.只有在調試模式下寫代碼時,當ctrl+s才會編譯。cmd窗口模式下flutter run運行項目時,需要切換到cmd按R/r才可以重新編譯預覽界面沒有變化,或者命令行不返回print 輸入R刷新一下

2.安裝包的時候 需要在dependencies:字段下配置  dio: ^2.0.7 然后直接保存

3.print的內容如果前面有字符串需要toString一下 如print('--------------------------》'+ result);但是直接print(result);卻可以 ---->原因可能是dart不支持字符串拼接只支持字符串模板?

4.ContentType.parse("application/x-www-form-urlencoded"); ContentType無效 解決辦法----->import 'dart:io';

5.android studio 快捷鍵
如果Ctrl+z 掉的內容,又反悔了,快捷鍵為:Ctrl + Shift + z
ctrl+D 向下復制一行
shift+F6 重命名

6.win10 android studio 代碼提示選擇屬性時卡死

Settings -->Editor -->General--> Code Completion 中去掉勾選的show the completion popup in 1000ms選項

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM