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立即註冊
],
),
),
);
登入介面的問題至此基本解決
相關文章
- 觸控式螢幕響應速度效能分析
- win10系統登入介面如何開啟螢幕軟鍵盤Win10
- 直播商城原始碼,響應式的全螢幕背景圖(主介面背景圖)原始碼
- 如何在 Ubuntu 登入螢幕上啟用輕擊Ubuntu
- win10登入cf時clientmfc未響應怎麼解決_win10登入cf時clientmfc未響應的解決方法Win10client
- 安卓app保持螢幕常亮安卓APP
- 前端響應式詳解前端
- Android 螢幕自適應Android
- 螢幕錄影專家安裝配置教程 入門詳解 - 精簡歸納
- 如何在Mac登入螢幕上設定移動的 Memoji表情?Mac
- postmam響應資料的提取和關聯,用於登入介面後面其他功能依賴登入功能
- 為任意螢幕尺寸構建 Android 介面Android
- 使用 jQuery, Angular.js 實現登入介面驗證碼詳解jQueryAngularJS
- SSH免密登入詳解
- DNS 響應報文詳解DNS
- 解決WinForm程式在高DPI螢幕下介面縮放錯誤ORM
- Android三種方式擷取任意介面螢幕Android
- Mac蓋上螢幕不休眠技巧,教你關閉螢幕不進入黑屏!Mac
- 阿里大師帶你詳解API介面安全阿里API
- WebRTC本地分享螢幕,錄製螢幕Web
- 詳解 Android 12L|更好地適配大螢幕裝置Android
- 谷歌首款帶屏智慧音響來襲,螢幕竟成第二波智慧音響之爭的焦點?谷歌
- Mac蓋上螢幕後外接螢幕持續黑畫面的解決方法Mac
- iOS螢幕旋轉解決方案iOS
- 登入介面完成(十五)
- 登入介面居中效果
- 登入介面(C#)C#
- 如何通過一個SAPGUI螢幕反查這個螢幕對應的事務碼GUI
- win10預覽版Skype UWP更新:帶來單應用螢幕分享功能Win10
- 實踐 | 為 Trackr app 適配大螢幕裝置APP
- LOGO!自帶螢幕顯示文字和變數值Go變數
- 徹底解決SpringBoot 介面404異常響應~Spring Boot
- 爬蟲模擬登入—OAUTH的詳解爬蟲OAuth
- web響應式佈局之 meta詳解Web
- HTTP請求頭和響應頭詳解HTTP
- 天擎 電腦當機、無響應、無法登入
- 向React Native應用新增螢幕捕捉功能React Native
- 網站如何自適應手機螢幕?網站