1、環(huán)境安裝
-
1基礎(chǔ)安裝步驟教程
Android Studio安裝與配置
https://juejin.cn/post/6844904054569582605
安裝Android Studio前,需要先選擇安裝Java環(huán)境,Java需要到Oracle官網(wǎng)上下載安裝,需要注冊一個Oracle賬號。
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
Windows 10 配置Java 環(huán)境變量
https://www.runoob.com/w3cnote/windows10-java-setup.html
https://blog.csdn.net/qq_40670946/article/details/90200364
Flutter安裝診斷
https://juejin.cn/post/6844904054599106568#doctor
Flutter doctor 問題
https://www.cnblogs.com/magic-world/p/14481107.html
flutter 環(huán)境配置 Android sdkmanager tool not found(當安卓sdk目錄沒有tools文件夾用此解決方案)
https://blog.csdn.net/qq_39849535/article/details/104961066 -
2全程安裝步驟教程
win10配置Androidstudio+flutter移動端開發(fā)環(huán)境
https://gwj1314.blog.csdn.net/article/details/124556246 -
3超級無敵sb報錯配置教程
環(huán)境配置之flutter與Android Studio之間的愛恨情仇(上萬字與數(shù)十種報錯的解決方案)
https://gwj1314.blog.csdn.net/article/details/125138267
2、Dart語言基礎(chǔ)
- dart與flutter的關(guān)系,就好比js與vue,react,native之間的關(guān)系。
- 在跨平臺開領(lǐng)域被 JS ?統(tǒng)天下的今天,Dart 語?的出現(xiàn)?疑是?股清流。
- Dart 屬于是強類型語? ,但可以? var 來聲明變量
- Dart 中 number 類型分為 int 和 double ,其中 java 中的 long 對應(yīng)的也是
Dart 中的 int 類型,Dart 中沒有 float 類型 - Dart 下只有 bool 型可以?于 if 等判斷,不同于 JS 這種使??式是不合法的
var g = “null”; if(g){} - Dart 中,switch ?持 String 類型
- Dart 中 final 和 const 表示常量,?如 final name = ‘GSY’; const value=
1000000; - Dart 下的數(shù)值,在作為字符串使?時,是需要顯式指定的。?如: int i = 0;
print(“aaaa” + i); 這樣并不?持,需要 print(“aaaa” + i.toString());
3、flutter UI基礎(chǔ)
-
Flutter Widget
在 Flutter 中?切的顯示都是 Widget ,Widget 是?切的基礎(chǔ),利?響應(yīng)式模式進?渲染。
Widget 分為 有狀態(tài) 和 ?狀態(tài) 兩種,在 Flutter 中每個??都是?幀,?狀態(tài)就是保持在那?幀,?有狀態(tài)的 Widget 當數(shù)據(jù)更新時,其實是創(chuàng)建了新的 Widget,只是 State 實現(xiàn)了跨幀的數(shù)據(jù)同步保存。
?狀態(tài)StatelessWidget
有狀態(tài)StatefulWidget -
Flutter 布局
Flutter 中擁有需要將近30種內(nèi)置的 布局Widget,其中常?有 Container、Padding、Center、Flex、Stack、Row、Column、ListView 等, -
Flutter ??
Flutter 中除了布局的 Widget,還有交互顯示的 Widget 和完整??呈現(xiàn)的Widget,其中常?的有 MaterialApp、Scaffold、Appbar、Text、Image、FlatButton等,下?簡單介紹這些 Wdiget,并完成?個??。
4、flutter 路由跳轉(zhuǎn)
在 Flutter 中想要實現(xiàn)頁面間的跳轉(zhuǎn)和傳值的話,離不開兩種路由:
- 基本路由(靜態(tài)路由)
- 命名式路由(動態(tài)路由)
基本路由(靜態(tài)路由)
- 使用push跳到指定的頁面,然后再使用pop回到原來的頁面
- 不過當你跳轉(zhuǎn)過去的時候,默認會有一個返回的箭頭按鈕,點擊就可以返回
- Navigator是一個路由管理的組件,它提供了打開和退出路由頁方法。Navigator通過一個棧來管理活動路由集合。通常當前屏幕顯示的頁面就是棧頂?shù)穆酚?。Navigator提供了一系列方法來管理路由棧。
- 跳轉(zhuǎn)頁面
RaisedButton(
child: Text(‘跳到詳情頁面’),
onPressed: (){
//跳轉(zhuǎn)頁面
Navigator.of(context).push(
MaterialPageRoute(
//沒有傳值
builder: (context)=>Detail()
)
);
}, - 還可以傳入?yún)?shù)
//跳轉(zhuǎn)頁面
Navigator.of(context).push(
MaterialPageRoute(
//傳值
builder: (context)=>Detail(Test:‘我是參數(shù)’)
//沒傳值
//builder: (context)=>Detail()
)
);
命名式路由
- 類似于 Vue 中的路由
- 新建了幾個頁面Main.dart、Page1.dart、Page1.dart和Page3.dart
//定義路由
routes: {
//需要使用context指定上下文
‘/page1’: (context) => Page1(),
‘/page2’: (context) => Page2(),
‘/page3’: (context) => Page3(),
}, - 然后調(diào)用
//定義按鈕
RaisedButton(
child: Text(“跳轉(zhuǎn)到Page1”),
onPressed: () {
//需要使用pushNamed方法
Navigator.pushNamed(context, “/page1”);
},
),
SizedBox(height: 20),
RaisedButton(
child: Text(“跳轉(zhuǎn)到Page2”),
onPressed: () {
Navigator.pushNamed(context, “/page2”);
},
),
5、后端http基礎(chǔ)
-
在Flutter中進行網(wǎng)絡(luò)請求通常使用http和dio來處理。http是dart開發(fā)的多平臺網(wǎng)絡(luò)請求,而dio是flutter中文社區(qū)開發(fā)的。
-
使用http(get,post)
import ‘package:http/http.dart’ as http;
var url = ‘https://example.com/whatsit/create’;
var response = await http.post(url, body: {‘name’: ‘doodle’, ‘color’: ‘blue’});
print(‘Response status: ${response.statusCode}’);
print(‘Response body: ${response.body}’); -
json數(shù)據(jù)處理
可以使用 dart:convert手動序列化JSON
通過調(diào)用JSON.decode方法來解碼JSON ,使用JSON字符串作為參數(shù)。
JSON.decode()僅返回一個Map<String, dynamic>,這意味著我們直到運行時才知道值的類型。
在小項目中,也可以直接List=(get到的數(shù)據(jù)),然后顯示的時候調(diào)用該List即可。 -
文件上傳
import ‘package:http/http.dart’;
_uploadFile(String filePath) async{
String url = “http://39.106.158.176:9010/user/upload_headpic?uid=725304943665217536&token=1”;
print(“YM------->上傳的路徑:$url”);
var uri = Uri.parse(url);
var request = new MultipartRequest(“POST”,uri);
var multipartFile = await MultipartFile.fromPath(“headpic”,filePath);
request.files.add(multipartFile);
StreamedResponse response = await request.send();
參考資料
Github
- gsy_github_app_flutter
- Flutter豆瓣客戶端 全網(wǎng)最100%還原豆瓣客戶端。
- alibaba/flutter-go: 包含 flutter 常用 140+ 組件
- Flutter 練習(xí)項目:https://github.com/simplezhli/flutter_deer
- wanandroid:https://github.com/ngu2008/wanandroid
- novel-fpg: 小說開源項目(py+go):https://github.com/black-currant/novel-fpg
- 高德地圖flutter定位組件:https://github.com/best-flutter/flutter_amap_location
- Johnson8888/learn_flutter
環(huán)境報錯
- Flutter中沒有為類MyApp錯誤定義方法’setState’ - Thinbug
- 升級 pre 1.12 Android 項目 · flutter/flutter Wiki
功能實現(xiàn)(博客文章)
- Flutter學(xué)習(xí)筆記(二)登陸注冊界面的實現(xiàn)_我在拉我的博客-CSDN博客_flutter登錄注冊
- flutter學(xué)習(xí)三:實現(xiàn)登錄界面,登錄成功后跳轉(zhuǎn)到首頁,從我的界面退出登錄_週莫的博客-CSDN博客_flutter login
- Web 開發(fā)簡介 | 白月黑羽
- 【Flutter 3-1】Flutter進階教程——底部導(dǎo)航欄BottomNavigationBar使用 - SegmentFault 思否
- flutter text 最大長度_超詳細!關(guān)于Flutter文本組件Widget的全面解讀_weixin_39632728的博客-CSDN博客
- Flutter開發(fā)入門 - 掘金
- 【老孟Flutter】強大的空安全 - 云+社區(qū) - 騰訊云
- 路由:https://juejin.cn/post/6844903950345306125
網(wǎng)課視頻
-
Dart Flutter入門實戰(zhàn)視頻教程-大地老師【2022】_嗶哩嗶哩_bilibili
-
Dart Flutter教程_Dart Flutter3.x入門實戰(zhàn)視頻教程-第15講以后是Flutter教程-2022年3月更新_嗶哩嗶哩_bilibili文章來源:http://www.zghlxwxcb.cn/news/detail-779703.html
-
2021Flutter從零到app上架_嗶哩嗶哩_bilibili文章來源地址http://www.zghlxwxcb.cn/news/detail-779703.html
到了這里,關(guān)于flutter基礎(chǔ)入門教程(Dart語法+UI布局+頁面路由+后端連接)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!