持久性底部面板可以用于补充应用主要内容的信息,即使用户与应用程序的其他控件进行互动,也仍然可以看到持久的底部面板。可以使用Scaffold.showBottomSheet函数创建和显示持久性底部面板。
import 'package:flutter/material.dart'; class MyApp extends StatefulWidget { @override _MyApp createState() => new _MyApp(); } class _MyApp extends State<MyApp> { /** *GlobalKey:整个应用程序中唯一的键 ScaffoldState:Scaffold框架的状态 解释:_scaffoldKey的值是Scaffold框架状态的唯一键 */ final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>(); // VoidCallback:没有参数并且不返回数据的回调 VoidCallback _showBottomSheetCallback; @override void initState() { super.initState(); _showBottomSheetCallback = _showBottomSheet; } void _showBottomSheet() { setState(() { // 禁用按钮 _showBottomSheetCallback = null; }); /** *currentState:获取具有此全局键的树中的控件状态 showBottomSheet:显示持久性的质感设计底部面板 解释:联系上文,_scaffoldKey是Scaffold框架状态的唯一键,因此代码大意为, 在Scaffold框架中显示持久性的质感设计底部面板 */ _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( '这是一个持久性的底部面板,向下拖动即可将其关闭', textAlign: TextAlign.center, style: new TextStyle( color: themeData.accentColor, fontSize: 24.0 ) ) ) ); }) /** *closed:当此对象控制的元素不再可见时完成 whenComplete:注册将在此未来完成时调用的函数 解释:联系上文,closed控制的元素是新构建的质感设计底部面板,因此代码大意为, 注册底部面板不再可见时调用的函数 */ .closed.whenComplete((){ // mounted:bool值,这个State对象当前是否在树中 if (mounted) { setState(() { // 重新启用按钮 _showBottomSheetCallback = _showBottomSheet; }); } }); } void _showMessage() { // showDialog<T>:显示应用程序当前内容上方的对话框 showDialog<Null>( context: context, // AlertDialog:质感设计中的告警对话框 child: new AlertDialog( // content:对话框的可选内容,以浅色字体显示在对话框的中心 content: new Text('你点击了浮动按钮'), // actions:显示在对话框底部的可选操作 actions: <Widget>[ // FlatButton:质感设计中的平面按钮 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() )); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Flutter质感设计之模态底部面板,包括了Flutter质感设计之模态底部面板的使用技巧和注意事项,需要的朋友参考一下 模态底部面板是菜单或对话框的替代方案,可防止用户与其他控件进行互动,可以使用showModalBottomSheet函数创建和显示模态底部面板。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍Flutter质感设计之底部导航,包括了Flutter质感设计之底部导航的使用技巧和注意事项,需要的朋友参考一下 BottomNavigationBar即底部导航栏控件。显示在应用底部的质感设计控件,用于在少量视图中切换。底部导航栏包含多个以标签、图标或两者搭配的形式显示在项目底部的项目,提供了应用程序的顶级视图之间的快速导航。对于较大的屏幕,侧面导航可能更好。 创建navigati
本文向大家介绍Flutter质感设计之弹出菜单,包括了Flutter质感设计之弹出菜单的使用技巧和注意事项,需要的朋友参考一下 PopupMenuButton控件即弹出菜单控件,点击控件会出现菜单。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍Flutter质感设计之表单输入,包括了Flutter质感设计之表单输入的使用技巧和注意事项,需要的朋友参考一下 FormField控件是单一表单字段,这个控件维护表单字段的当前状态,以便更新和验证错误能在UI中可见。TextField控件就是在FormField中包装了一个Input控件(后面的文章讲解),FormField维护输入的当前值,使您不需要自己管理它,更容易一次保存,重
本文向大家介绍Flutter进阶质感设计之标签栏,包括了Flutter进阶质感设计之标签栏的使用技巧和注意事项,需要的朋友参考一下 在质感设计的控件中,有一个显示水平的一行选项卡,通常作为AppBar控件的一部分创建,并与TabBarView控件结合使用。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
上次用JBoss 7.1 (Java EE6标准)开发app,用DAOs写了持久层。 首先,我有一个“抽象”的道,它是所有具体道的父亲: 然后,我的域中的每个DB实体都有一个dao实现。 它们都非常相似,它们只是为比通常的“crud”操作更复杂的查询添加方法。 下面是一个示例: 如您所见,我的Dao是无状态EJB。 这种方式使我的应用程序工作,但...当我必须创建一个新的实体时,我必须创建实体本身