IconButton

Flutter之路由管理(页面跳转)

放肆的年华 提交于 2020-12-14 13:27:37
路由:核心是 路由映射表 . 如:名字 detail 映射到 DetailPage 页面等 在Flutter中,路由管理主要有两个类:Route和Navigator. Route 一个页面要想被路由统一管理,必须包装为一个Route Navigator 管理所有的Route的Widget,通过一个Stack来进行管理. MaterialApp、CupertinoApp、WidgetsApp它们默认是有插入Navigator的,在需要的时候,只需要直接使用即可. Navigator.of(context) Navigator常用方法: // 路由跳转:传入一个路由对象 Future<T> push<T extendsObject>(Route<T> route) // 路由跳转:传入一个名称(命名路由) Future<T> pushNamed<T extendsObject>( String routeName, { Object arguments, }) // 路由返回:可以传入一个参数 bool pop<T extendsObject>([ T result ]) 命名路由 命名路由是将名字和路由的映射关系,在一个地方进行统一的管理 有了命名路由,就可以通过 Navigator.pushNamed() 方法来跳转到新的页面 命名路由的位置 放在MaterialApp的

【Flutter实战】图片组件及四大案例

[亡魂溺海] 提交于 2020-08-18 07:03:35
老孟导读:大家好,这是【Flutter实战】系列文章的第三篇,这一篇讲解图片组件,Image有很多高级用法,希望对您有所帮助。 图片组件是Flutter基础组件之一,和文本组件一样必不可少。图片组件包含Image和Icon两个组件,本质上Icon不属于图片组件,但其外形效果上类似于图片。 在项目中建议优先使用Icon组件,Icon本质上是一种字体,只不过显示的不是 文字 ,而是图标,而Image组件先通过图片解码器将图片解码,所以Icon有如下优点: 通常情况下,图标比图片体积更小,显著的减少App包体积。 图标不会出现失真或者模糊的现象,例如将20x20的图片,渲染在200x200的屏幕上,图片会失真或模糊,而图标是矢量图,不会失真,就像字体一样。 多个图标可以存放在一个文件中,方便管理。 全平台通用。 Image Image组件用于显示图片,图片的来源可以是网络、项目中图片或者设备上的图片。 加载网络图片: Image.network( 'http://pic1.win4000.com/pic/c/cf/cdc983699c.jpg', ) 加载项目中图片: 首先将图片拷贝到项目中,通常情况下,拷贝到 assets/images/ 目录下, assets/images/ 目录为手动创建,新建的项目默认是没有此目录的。 设置 pubspec.yaml 配置文件: assets:

【Flutter实战】图片组件及四大案例

为君一笑 提交于 2020-08-15 16:40:27
老孟导读:大家好,这是【Flutter实战】系列文章的第三篇,这一篇讲解图片组件,Image有很多高级用法,希望对您有所帮助。 图片组件是Flutter基础组件之一,和文本组件一样必不可少。图片组件包含Image和Icon两个组件,本质上Icon不属于图片组件,但其外形效果上类似于图片。 在项目中建议优先使用Icon组件,Icon本质上是一种字体,只不过显示的不是 文字 ,而是图标,而Image组件先通过图片解码器将图片解码,所以Icon有如下优点: 通常情况下,图标比图片体积更小,显著的减少App包体积。 图标不会出现失真或者模糊的现象,例如将20x20的图片,渲染在200x200的屏幕上,图片会失真或模糊,而图标是矢量图,不会失真,就像字体一样。 多个图标可以存放在一个文件中,方便管理。 全平台通用。 Image Image组件用于显示图片,图片的来源可以是网络、项目中图片或者设备上的图片。 加载网络图片: Image.network( 'http://pic1.win4000.com/pic/c/cf/cdc983699c.jpg', ) 加载项目中图片: 首先将图片拷贝到项目中,通常情况下,拷贝到 assets/images/ 目录下, assets/images/ 目录为手动创建,新建的项目默认是没有此目录的。 设置 pubspec.yaml 配置文件: assets:

flutter组件6【AppBar的使用】

☆樱花仙子☆ 提交于 2020-08-12 15:27:26
1.图示 2.解释 AppBar 有以下常用属性: leading → Widget - 在标题前面显示的一个控件,在首页通常显示应用的 logo;在其他界面通常显示为返回按钮。 title → Widget - Toolbar 中主要内容,通常显示为当前界面的标题文字。 actions → List - 一个 Widget 列表,代表 Toolbar 中所显示的菜单,对于常用的菜单,通常使用 IconButton 来表示;对于不常用的菜单通常使用 PopupMenuButton 来显示为三个点,点击后弹出二级菜单。 bottom → PreferredSizeWidget - 一个 AppBarBottomWidget 对象,通常是 TabBar。用来在 Toolbar 标题下面显示一个 Tab 导航栏。 elevation → double - 控件的 z 坐标顺序,默认值为 4,对于可滚动的 SliverAppBar,当 SliverAppBar 和内容同级的时候,该值为 0, 当内容滚动 SliverAppBar 变为 Toolbar 的时候,修改 elevation 的值。 flexibleSpace → Widget - 一个显示在 AppBar 下方的控件,高度和 AppBar 高度一样,可以实现一些特殊的效果,该属性通常在 SliverAppBar 中使用。

Flutter学习笔记(38)--自定义控件之组合控件

ε祈祈猫儿з 提交于 2020-08-11 02:44:25
如需转载,请注明出处: Flutter学习笔记(38)--自定义控件之组合控件 在开始之前想先写点其他的,emm...就是今天在学习到自定义控件的时候,由于自定义控件这块一直是我的短板,无论是Android原生开发还是Flutter,对我来说都是致命伤,内心深处不知道为什么就是很抵触...学着学着就突然感觉特烦躁, 不知道自己现在学这些有什么用,有什么意义,工作中的项目也用不上,年前换工作的时候,去快手面过Flutter的岗位,很遗憾二面没有通过,我自己也不死心,想好好准备准备再去试一下,也算是自己的一个小目标吧。 梦想总是要有的,万一不小心实现了呢!随便发几句牢骚,平复下心情,革命尚未成功,同志仍需努力!按照计划一步一步来吧! ---------------------------------------------------------- 正文 ------------------------------------------------------------- Flutter中的自定义控件其实和Android中的很类似,都有组合控件、自绘控件。 组合控件就是将通用的控件封装起来,其内部由多个小控件组合起来实现的,比如说公用的title栏,其实和我们平时写页面的时候没什么区别。 自绘控件就是继承RenderObjectWidget

How to set background color for an icon button?

五迷三道 提交于 2020-05-11 05:19:29
问题 I want to apply background color for icon button but I don't see an explicit backgroundColor property for it. I want to achieve this: Currently I was able to achieve till here: Below is the code so far: @override Widget build(BuildContext context) { return Scaffold( resizeToAvoidBottomPadding: false, backgroundColor: Color(0xFF13212C), appBar: AppBar( title: Text('Demo'), ), drawer: appDrawer(), body: new Center( child: new Column( crossAxisAlignment: CrossAxisAlignment.stretch, //

Qt 自定义QTabWidget

时光毁灭记忆、已成空白 提交于 2020-04-27 21:21:17
思路: QTabWidget的特点:点击不同的选项卡显示不同的窗口。可以将QTabWidget分成两部分:   (1).选项卡:点击时要知道点击的是哪个选项。则需要将选项卡和窗口的信息存起来,点击时去这个信息中判断;   (2).窗口:点击某个选项卡时,相应的窗口显示,其他窗口隐藏,可以将这些窗口全部放到一个布局中。 (1)创建一个结构体,包含选项卡和窗口的信息: struct TabWidgetItem {   QString id; // 每项的 id   QWidget* window; // 窗口   IconButton* icon; // 选项卡    int status; // 0 选中 ; 1 选中 }; QList <TabWidgetItem*> m_pTabWidgetList; // 存放整个 TabWidget (选项卡和窗口所有信息)信息的 list 列表 (2)初始化布局和结构体 void TabWidget::initLayout() {   QHBoxLayout * pMainLayout = new QHBoxLayout( this );   pMainLayout ->setMargin( 1 );   pMainLayout ->setSpacing( 10 );   QVBoxLayout * pIconLayout = new

一篇带你看懂Flutter叠加组件Stack

你离开我真会死。 提交于 2020-03-06 20:50:24
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Stack Stack组件可以将子组件叠加显示,根据子组件的顺利依次向上叠加,用法如下: Stack( children: <Widget>[ Container( height: 200, width: 200, color: Colors.red, ), Container( height: 170, width: 170, color: Colors.blue, ), Container( height: 140, width: 140, color: Colors.yellow, ) ], ) 效果如下: Stack未定位的子组件大小由 fit 参数决定,默认值是 StackFit.loose ,表示子组件自己决定, StackFit.expand 表示尽可能的大,用法如下: Stack( fit: StackFit.expand, ... ) Stack未定位的子组件的默认左上角对齐,通过 alignment 参数控制,用法如下: Stack( alignment: Alignment.center, ... ) 效果如下: 有没有注意到 fit 和 alignment 参数控制的都是未定位的子组件,那什么样的组件叫做定位的子组件

AppBar布局及相关属性

▼魔方 西西 提交于 2019-12-06 03:23:16
AppBar属于基础组件,结构如下 以下示例显示一个带有两个简单操作的AppBar。第一个动作打开SnackBar,第二个动作导航到新页面。 import 'package:flutter/material.dart'; class LoginPage extends StatefulWidget { @override _LoginPageState createState() => _LoginPageState(); } class _LoginPageState extends State<LoginPage> { @override Widget build(BuildContext context) { final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); final SnackBar snackBar = const SnackBar(content: Text('Showing Snackbar')); return Scaffold( key: scaffoldKey, appBar: AppBar( title: const Text('AppBar Demo'), actions: <Widget>[ IconButton( icon: const Icon(Icons

AppBar布局及相关属性

有些话、适合烂在心里 提交于 2019-12-01 02:07:48
AppBar属于基础组件,结构如下 以下示例显示一个带有两个简单操作的AppBar。第一个动作打开SnackBar,第二个动作导航到新页面。 import 'package:flutter/material.dart'; class LoginPage extends StatefulWidget { @override _LoginPageState createState() => _LoginPageState(); } class _LoginPageState extends State<LoginPage> { @override Widget build(BuildContext context) { final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); final SnackBar snackBar = const SnackBar(content: Text('Showing Snackbar')); return Scaffold( key: scaffoldKey, appBar: AppBar( title: const Text('AppBar Demo'), actions: <Widget>[ IconButton( icon: const Icon(Icons