app登入介面詳解(帶螢幕響應)
應用場景:
實現app登入介面:
最基本的登入介面需要包括使用者名稱輸入框,密碼輸入框和一個登入按鈕
技術實現:
程式碼詳情(點選下載)(記得修改檔案中的網路請求與頁面傳值哦,刪除即可)
該頁面使用了兩個第三方庫
螢幕適配外掛:flutter_screenutil: ^0.4.2
第三方 icon 圖示外掛:font_awesome_flutter: ^8.2.0
問題細節:
1.焦點
(1)輸入框焦點問題
//1.焦點監聽和監聽使用者名稱框的輸入變化
//2.是否顯示尾部清除按鈕
@override
void initState() {
// TODO: implement initState
//設定焦點監聽
_focusNodeUserName.addListener(_focusNodeListener);
_focusNodePassWord.addListener(_focusNodeListener);
//監聽使用者名稱框的輸入改變
_userNameController.addListener(() {
print(_userNameController.text);
// 監聽文字框輸入變化,當有內容的時候,顯示尾部清除按鈕,否則不顯示
if (_userNameController.text.length > 0) {
_isShowClear = true;
} else {
_isShowClear = false;
}
});
super.initState();
}
(2)移除焦點
@override
void dispose() {
// TODO: implement dispose
// 移除焦點監聽
_focusNodeUserName.removeListener(_focusNodeListener);
_focusNodePassWord.removeListener(_focusNodeListener);
_userNameController.dispose();
super.dispose();
}
(3)監聽焦點
// 監聽焦點
//監聽點選輸入框或密碼框
Future<Null> _focusNodeListener() async {
if (_focusNodeUserName.hasFocus) {
print("使用者名稱框獲取焦點");
// 取消密碼框的焦點狀態
_focusNodePassWord.unfocus();
}
if (_focusNodePassWord.hasFocus) {
print("密碼框獲取焦點");
// 取消使用者名稱框焦點狀態
_focusNodeUserName.unfocus();
}
}
2.驗證賬號密碼(使用正規表示式)
/**
* 驗證使用者名稱
*/
String validateUserName(value) {
// 正則匹配手機號
RegExp exp = RegExp(
r'^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\d{8}$');
if (value.isEmpty) {
return '使用者名稱不能為空!';
} else if (!exp.hasMatch(value)) {
return '請輸入正確手機號';
}
return null;
}
/**
* 驗證密碼
*/
String validatePassWord(value) {
if (value.isEmpty) {
return '密碼不能為空';
} else if (value
.trim()
.length < 6 || value
.trim()
.length > 18) {
return '密碼長度不正確';
}
return null;
}
3.前端介面實現(所有元件官方文件都有詳解)
(1)賬號與密碼輸入框
使用TextFormField元件 (詳細程式碼下載程式碼檔案)
(2)登入按鈕
使用RaisedButton元件
4.第三方登入區域
使用第三方icon庫
//例:
IconButton(
color: Colors.green[200],
// 第三方庫icon圖示
icon: Icon(FontAwesomeIcons.weixin),
iconSize: 40.0,
onPressed: () {
},
),
5.監聽空白區域與螢幕適應
Scaffold(
backgroundColor: Colors.white,
// 外層新增一個手勢,用於點選空白部分,回收鍵盤
body: new GestureDetector(
onTap: () {
// 點選空白區域,回收鍵盤
print("點選了空白區域");
_focusNodePassWord.unfocus();
_focusNodeUserName.unfocus();
},
child: new ListView(
children: <Widget>[
new SizedBox(height: ScreenUtil().setHeight(80),),
logoImageArea, //logo圖片
new SizedBox(height: ScreenUtil().setHeight(70),),
inputTextArea, //輸入文字框區域
new SizedBox(height: ScreenUtil().setHeight(80),),
loginButtonArea, //登入按鈕區域
new SizedBox(height: ScreenUtil().setHeight(60),),
thirdLoginArea, //第三方登入區域
new SizedBox(height: ScreenUtil().setHeight(60),),
bottomArea, //忘記密碼or立即註冊
],
),
),
);
登入介面的問題至此基本解決
相關文章
- APP「登入註冊模組」詳解APP
- 觸控式螢幕響應速度效能分析
- 直播商城原始碼,響應式的全螢幕背景圖(主介面背景圖)原始碼
- win10系統登入介面如何開啟螢幕軟鍵盤Win10
- android螢幕適配詳解Android
- ‘Unity Greeter Badges’:將丟失的會話圖示帶回Ubuntu登入螢幕Unity會話Ubuntu
- 【求助】關於響應式設計螢幕解析度和螢幕尺寸的問題
- 如何在 Ubuntu 登入螢幕上啟用輕擊Ubuntu
- 常見機箱LCD螢幕顯示程式碼對應資訊詳解
- win10登入cf時clientmfc未響應怎麼解決_win10登入cf時clientmfc未響應的解決方法Win10client
- 安卓app保持螢幕常亮安卓APP
- APP登入介面UI設計欣賞APPUI
- 前端響應式詳解前端
- 如何在Mac登入螢幕上設定移動的 Memoji表情?Mac
- 螢幕錄影專家安裝配置教程 入門詳解 - 精簡歸納
- postmam響應資料的提取和關聯,用於登入介面後面其他功能依賴登入功能
- Apple Watch螢幕將由LG和三星供應APP
- Android 螢幕自適應Android
- iOS開發 詳解強制螢幕旋轉的方法iOS
- DNS 響應報文詳解DNS
- 使用 jQuery, Angular.js 實現登入介面驗證碼詳解jQueryAngularJS
- SSH免密登入詳解
- APP開發實戰174-Android7.0的螢幕縮放功能對APP的影響APPAndroid
- Apple裝置螢幕尺寸和方向APP
- 為任意螢幕尺寸構建 Android 介面Android
- 解決WinForm程式在高DPI螢幕下介面縮放錯誤ORM
- Mac蓋上螢幕不休眠技巧,教你關閉螢幕不進入黑屏!Mac
- Android判斷螢幕狀態與螢幕解鎖和鎖定Android
- "留拍"-註冊/登入詳解
- WebRTC本地分享螢幕,錄製螢幕Web
- 阿里大師帶你詳解API介面安全阿里API
- 谷歌首款帶屏智慧音響來襲,螢幕竟成第二波智慧音響之爭的焦點?谷歌
- Unity + ZXing + 螢幕旋轉自動自適應 + 自定義掃碼介面Unity
- Android三種方式擷取任意介面螢幕Android
- Mac蓋上螢幕後外接螢幕持續黑畫面的解決方法Mac
- iOS螢幕旋轉解決方案iOS
- 如何快速更改螢幕解鎖特效特效
- Android喚醒、解鎖螢幕Android