Flutter質(zhì)感設(shè)計(jì)之持久底部面板
持久性底部面板可以用于補(bǔ)充應(yīng)用主要內(nèi)容的信息,即使用戶與應(yīng)用程序的其他控件進(jìn)行互動(dòng),也仍然可以看到持久的底部面板??梢允褂肧caffold.showBottomSheet函數(shù)創(chuàng)建和顯示持久性底部面板。
import 'package:flutter/material.dart';
class MyApp extends StatefulWidget {
@override
_MyApp createState() => new _MyApp();
}
class _MyApp extends State<MyApp> {
/**
*GlobalKey:整個(gè)應(yīng)用程序中唯一的鍵
ScaffoldState:Scaffold框架的狀態(tài)
解釋:_scaffoldKey的值是Scaffold框架狀態(tài)的唯一鍵
*/
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
// VoidCallback:沒有參數(shù)并且不返回?cái)?shù)據(jù)的回調(diào)
VoidCallback _showBottomSheetCallback;
@override
void initState() {
super.initState();
_showBottomSheetCallback = _showBottomSheet;
}
void _showBottomSheet() {
setState(() {
// 禁用按鈕
_showBottomSheetCallback = null;
});
/**
*currentState:獲取具有此全局鍵的樹中的控件狀態(tài)
showBottomSheet:顯示持久性的質(zhì)感設(shè)計(jì)底部面板
解釋:聯(lián)系上文,_scaffoldKey是Scaffold框架狀態(tài)的唯一鍵,因此代碼大意為,
在Scaffold框架中顯示持久性的質(zhì)感設(shè)計(jì)底部面板
*/
_scaffoldKey.currentState.showBottomSheet<Null>((BuildContext context){
final ThemeData themeData = Theme.of(context);
return new Container(
decoration: new BoxDecoration(
border: new Border(top: new BorderSide(color: themeData.disabledColor))
),
child: new Padding(
padding: const EdgeInsets.all(32.0),
child: new Text(
'這是一個(gè)持久性的底部面板,向下拖動(dòng)即可將其關(guān)閉',
textAlign: TextAlign.center,
style: new TextStyle(
color: themeData.accentColor,
fontSize: 24.0
)
)
)
);
})
/**
*closed:當(dāng)此對(duì)象控制的元素不再可見時(shí)完成
whenComplete:注冊(cè)將在此未來完成時(shí)調(diào)用的函數(shù)
解釋:聯(lián)系上文,closed控制的元素是新構(gòu)建的質(zhì)感設(shè)計(jì)底部面板,因此代碼大意為,
注冊(cè)底部面板不再可見時(shí)調(diào)用的函數(shù)
*/
.closed.whenComplete((){
// mounted:bool值,這個(gè)State對(duì)象當(dāng)前是否在樹中
if (mounted) {
setState(() {
// 重新啟用按鈕
_showBottomSheetCallback = _showBottomSheet;
});
}
});
}
void _showMessage() {
// showDialog<T>:顯示應(yīng)用程序當(dāng)前內(nèi)容上方的對(duì)話框
showDialog<Null>(
context: context,
// AlertDialog:質(zhì)感設(shè)計(jì)中的告警對(duì)話框
child: new AlertDialog(
// content:對(duì)話框的可選內(nèi)容,以淺色字體顯示在對(duì)話框的中心
content: new Text('你點(diǎn)擊了浮動(dòng)按鈕'),
// actions:顯示在對(duì)話框底部的可選操作
actions: <Widget>[
// FlatButton:質(zhì)感設(shè)計(jì)中的平面按鈕
new FlatButton(
onPressed: () { Navigator.pop(context); },
child: new Text('確定')
)
]
),
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
appBar: new AppBar(
title: new Text('底部面板')
),
floatingActionButton: new FloatingActionButton(
onPressed: _showMessage,
backgroundColor: Colors.redAccent[200],
child: new Icon(Icons.add)
),
body: new Center(
child: new RaisedButton(
onPressed: _showBottomSheetCallback,
child: new Text('顯示底部面板')
)
)
);
}
}
void main() {
runApp(new MaterialApp(
title: 'Flutter Demo',
home: new MyApp()
));
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果(一)
- Flutter Android端啟動(dòng)白屏問題的解決
- flutter實(shí)現(xiàn)仿boss直聘功能
- Flutter中ListView 的使用示例
- Flutter質(zhì)感設(shè)計(jì)之彈出菜單
- Flutter實(shí)現(xiàn)底部導(dǎo)航欄效果
- Flutter路由的跳轉(zhuǎn)、動(dòng)畫和傳參詳解(最簡(jiǎn)單)
- Flutter質(zhì)感設(shè)計(jì)之底部導(dǎo)航
- Flutter質(zhì)感設(shè)計(jì)之進(jìn)度條
- Flutter UI如何使用Provide實(shí)現(xiàn)主題切換詳解
相關(guān)文章
簡(jiǎn)單實(shí)現(xiàn)Android鬧鐘功能
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)Android鬧鐘功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Android SurfaceView運(yùn)行機(jī)制剖析--處理切換到后臺(tái)再重新進(jìn)入程序時(shí)的異常
本文主要介紹Android SurfaceView運(yùn)行機(jī)制,這里整理了詳細(xì)的資料來講解SurfaceView的運(yùn)行原理,并附示例代碼參考,有需要的小伙伴可以參考下2016-08-08
Android編程動(dòng)態(tài)按鈕實(shí)現(xiàn)方法
這篇文章主要介紹了Android編程動(dòng)態(tài)按鈕實(shí)現(xiàn)方法,分享了onTouch方法及xml調(diào)用兩種實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-10-10
android基礎(chǔ)總結(jié)篇之一:Activity生命周期
本篇文章主要介紹了android基礎(chǔ)總結(jié)篇之一:Activity生命周期,想要學(xué)習(xí)的可以了解一下。2016-11-11
Win10下Android App安裝配置開發(fā)環(huán)境
這篇文章主要為大家詳細(xì)介紹了Win10下Android App安裝配置開發(fā)環(huán)境,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Android編程實(shí)現(xiàn)在一個(gè)程序中啟動(dòng)另一個(gè)程序的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)在一個(gè)程序中啟動(dòng)另一個(gè)程序的方法,結(jié)合實(shí)例形式分析了Android通過ResolveInfo類來取得啟動(dòng)Acitivty類名的方法來啟動(dòng)另一個(gè)程序的方法,需要的朋友可以參考下2017-02-02
android RecycleView實(shí)現(xiàn)多級(jí)樹形列表
這篇文章主要為大家詳細(xì)介紹了android RecycleView實(shí)現(xiàn)多級(jí)樹形列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05

