custom_tabbar.dart
1 | import 'package:ajbaby/res/colors.dart'; |
引用
1 | body: CustomTabBar( |
select * from learn
1 | import 'package:ajbaby/res/colors.dart'; |
1 | body: CustomTabBar( |
本文首先讲的Flutter中的路由,然后主要讲下Flutter中栈管理的几种方法。
在Flutter中,我们需要在不同屏幕或者页面之间进行切换和发送数据,这些“screens”或者“pages”被称为Route(路由),是由一个Navigator的小部件进行管理。
Navigator可以管理包含若干Route对象的堆栈,并提供了管理的方法,平常我们经常用的就是[Navigator.push]和[Navigator.pop]。
尽管我们可以自己直接创建一个navigator,但是当我们创建一个WidgetsApp或者MaterialApp,Flutter会自动默认创建一个Navigator。
所以我们一般是使用由[WidgetsApp]或者[MaterialApp]所创建的Navigator就行了,然后通过调用[Navigator.of]
来拿到当前的Navigator的状态NavigatorState,然后调用它的pop或者push方法。
比如要导航到一个新的页面,我们可以创建一个[MaterialPageRoute]的实例,然后调用Navigator.of(context).push()方法就将新页面添加到堆栈的顶部。
返回上一个页面,则调用Navigator.pop(context)就可以从堆栈中删除这个屏幕;
1 | Navigator.of(context) |
源码中可以看到,AppBar只是实现了 PreferredSizeWidget接口
1 | class AppBar extends StatefulWidget implements PreferredSizeWidget |
那么我们也可以从这进行入手,自定义一个实现了 PreferredSizeWidget
的Widget
具体代码并不多,比你想象的简单,直接上代码:
1 | import 'package:flutter/material.dart'; |
1 | appBar: new CustomAppbar( |
leftBarButtonItemWidget()
rightBarButtonItemsWidget()
两个方法是我自定义的导航栏按钮,实现自己需要的即可。值得说的是,可以将leadingWidget设置为非@required的,在自定义的AppBar里面做好处理即可,另外在上面的代码中并没有限制导航栏上每个Widget所占用的最大空间,如果你的导航栏子组件可能很宽,提前进行妥善处理是个好主意。
flutter 屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理的布局!
github: https://github.com/OpenFlutter/flutter_screenutil
安装之前请查看最新版本
1 | dependencies: |
1 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
width | double | 1080px | 设计稿中设备的宽度,单位px |
height | double | 1920px | 设计稿中设备的高度,单位px |
allowFontScaling | bool | false | 设置字体大小是否根据系统的“字体大小”辅助选项来进行缩放 |
开始尝试用flutter开发,flutter版本1.0,写类似微信底部tab切换界面时发现界面老被重置,网上找了一圈说保持状态需要子页面mixin AutomaticKeepAliveClientMixin,然后重写
1 | @override |
但发现需要配合其他组件,不是随便mixin就有用的,尝试几种写法总结BottomNavigationBar+List
1 | void main() => runApp(MyApp()); |
1 | // with 混入 |
1 | @override |
1 | @override |
如题,Android Studio 3.6 正式版终于发布了,值得兴奋呀,毕竟 3.5 大版本更新也已经差不多半年了,撒花撒花!这次更新又更新了什么呢?
包括有设计、开发、构建、测试、优化等多方面,下面我们来看看 Release Notes 写了些什么吧!
我们很高兴宣布 Android Studio 3.6 发布稳定版本了,该版本内有一些针对性的新特性,主要解决了在代码编辑和调试用例中的质量问题。这是我们在 Project Marble 结束之后的第一个版本,其重点是构建强大的集成开发环境(IDE)的基本功能和流。我们从 Project Marble 中学到了很多,在 Android Studio 3.6 中,我们引入了一小部分功能,完善的现有功能,并花费了很大的精力来解决错误并改善基础性能,以确保我们达到去年设定的高质量标准。
Android Studio 3.6 的一些亮点包括一种使用 XML 快速设计、开发和预览应用布局的新方法,在设计编辑器中提供了新的拆分视图。此外,您不再需要手动键入 GPS 坐标来测试应用的位置,因为我们现在将 Google 地图直接嵌入到 Android 模拟器扩展控制面板中。最后,通过针对片段和活动的自动内存泄漏检测,我们简化了应用并查找 Bug。我们希望所有这些功能可以帮助您在 Android 上开发时更快乐、更高效。
感谢在预览版中提供早期反馈的用户。您的反馈帮助我们迭代和改进 Android Studio 3.6 中的功能。如果您已准备好迎接下一个稳定版本,并且想要使用一组新的生产力功能,Android Studio 3.6 已准备好下载,以便您入门。
以下是 Android Studio 3.6 中由主要开发人员流组织的全部新功能列表。
前言,Flutter的热重载(hot reload)功能可以帮助您在无需重新启动应用的情况下快速、轻松地进行测试、构建用户界面、添加功能以及修复错误。
通过将更新后的源代码文件注入正在运行的Dart虚拟机(VM)中来实现热重载。
在虚拟机使用新的的字段和函数更新类后,Flutter框架会自动重新构建widget树,以便您快速查看更改的效果。
要热重载一个Flutter应用程序:
cmd-s
/ctrl-s
)),或者单击工具栏上的Hot Reload按钮。