从一次错误的操作开始 $buildingObject = Building::findAll("status=1"); 1 这个调用看着没有任何毛病,但是在使用时返回的结果却是一个空数组。...再回过头来看看数据表中: ? 按照套路来讲,查询后应该返回的是一个对象数组呀!为什么是空呢?百思不得其解,还是去翻看一下代码吧。...这部分的代码也很简单,重点是在那个if判断中。 if (!...//判断主键是否为空 $pk = $primaryKey[0]; //判断有没有连表查询,如果有连表查询就处理成 表名.主键 的方式 if (!...$condition = [$pk => $condition]; } else { //如果主键为空则抛出异常 throw new InvalidConfigException('"'
4.1 GetStorage 的使用步骤 添加依赖: 首先,确保在 pubspec.yaml 文件中添加了 get_storage 和 get 包。...如果你希望创建不同的存储空间,可以指定存储文件名: final customBox = GetStorage('customBox'); customBox.write('data', 'Custom..., // 但不可变 Get.height Get.width // 获取当前导航器的上下文 Get.context // 获取前景中 snackbar/对话框/底部表单的上下文,可以在代码中的任何地方使用...Get.contextOverlay // 注意:以下方法是上下文的扩展。...因为你在 UI 的任何地方都有上下文的访问权限,所以可以在 UI 代码的任何地方使用它 // 如果你需要可变的高度/宽度(如桌面或可以缩放的浏览器窗口),你需要使用上下文 context.width
; MediaQuery MediaQuery 一直存在于 WidgetsApp 和 MaterialApp 中,MediaQuery 继承自 InheritedWidget 是一个单独的 Widget...,但一般通过 MediaQuery.of(context) 来获取相关信息; 当相关信息发生变化,例如屏幕旋转等时,屏幕中 Widget 会重新构建,以保持最新状态;我们可以通过 MediaQuery...7. accessibleNavigation accessibleNavigation 为是否使用 TalkBack 或 VoiceOver 之类的辅助功能与应用程序进行交互,用以辅助视力障碍人群;...8. invertColors invertColors 为是否使用颜色反转,主要用于 iOS 设备; print('颜色反转 -> ${MediaQuery.of(context).invertColors...11. boldText boldText 为平台是否要求使用粗体; print('是否使用粗体 -> ${MediaQuery.of(context).boldText}'); ?
内边距(padding)是内容区周围的空间,给元素应用的背景会作用于元素的内容、内边距和边框(默认值到边框,但实线边框看不出来,虚线可看出,可以通过background-clip属性修改这一行为)。...如上,盒模型的计算如果以这一实物方案为参考,更加容易被人理解。所以,浏览器开发人员使用开始提到的计算方式是很不明智的。...无论是否位移,相对定位的元素仍然会在原始文档流中占据初始的空间。因此,平移后会遮挡其他元素。...3.2.1.2 绝对定位 绝对定位会把元素拿出文档流,不会再占用原来的空间,文档流中的其他元素会各自重新定位,仿佛绝对定位的元素不存在一样。。...可以在发生塌陷的父元素内添加一个空的元素,并清除浮动,这时空的元素前面会留下足够的空间来容纳浮动元素。 ?
1.3 Fragments 使用Fragment,你可以将你的UI逻辑提取到单独的组件中,这样当你为大屏幕尺寸设计多窗格布局时,你不必单独定义逻辑。您可以重用为每个片段定义的Fragment。...请记住:MediaQuery和LayoutBuilder之间的主要区别在于,MediaQuery使用屏幕的完整上下文,而不仅仅是特定小部件的大小。...当Expanded 使用在一个Row、Column或Flex中,Expanded 可以使它的子Widget自动填充可用空间,与之相反,Flexible 的子widget不会填满整个可用空间。...3.1.5 FractionallySizedBox FractionallySizedBox widget将其子元素的大小调整为可用空间的一小部分。...您可以看到,在Flutter中创建分屏视图是非常容易的,您只需使用一行将它们并排放置,然后为了填满整个空间,只需使用Expanded widget包装两个视图。
flex行为,使它们在行中占用相等的空间 HTML代码如下: 中鼠标滑过图片突出放大效果 向外移动兄弟元素 让悬停项的兄弟项远离悬停项是整个过程中很棘手的部分。我们可以使用的一个CSS特性是一般的兄弟组合器。这使我们可以选择位于悬停项之后的所有同级项。...因为我们设置了一个项目在悬停时可以放大150%,所以转换应该设置为25%。这是悬停项所占用的额外空间的一半。...使用通用的同级组合器可以将悬停的项目向右移动后放置的项目。 获得超级特定的信息,因此悬停的项目不会像其他项目一样进行转变。 我们假设您的文档使用从左到右的书写模式。...如果要在从右到左的上下文中使用此效果,则需要将悬停的外部容器内的所有项目设置为向右移动,并使用常规的同级组合器将所有选定的项目向左移动。
版本,ios版本正在解决账号问题 效果如下: 架构更新 之前技术采用flutter做的前端,后端api则对接的是抖音官方api,由于抖音的官方api更新频繁,导致经常播放不了,所以索性自己来写服务器后端...注册页面 上下轮播时优化播放效果 点赞功能 其他功能还在继续完善,各位喜欢的话欢迎点个star 前端项目地址:https://github.com/telsacoin/telsavideo 后端需要的话请留下邮箱...home_top_foryou 至此,国际化就完成了 另外本地针对播放模块进行了优化,将代码拆分到videoplayer.dart文件.一来是方便代码阅读,而来可以作为子组件使用,其他的代码写得太冗余也在继续拆开...snapshot.connectionState}'); } }); 这里可以看到当snapshot.connectionState == ConnectionState.waiting的时候请求的数据正在加载中...width、heigth传入到下一个控件,这样好计算界面呈现的宽度与高度 return Videoplayer( item: item, width: MediaQuery.of
# 属性初始值 在 CSS 中,每个元素都拥有自己的初始值,并且提供了一个通用的值 initial 用于还原为属性值为其初始值。...Flow 要点: 根元素、浮动和绝对定位的元素会脱离常规流 其它元素都在常规流之内 (in-flow) 常规流中的盒子,在某种排版上下文中参与布局 排版上下文通过 display 属性创建 # 行级排版上下文...决定一行内盒子的水平对齐 vertical-align 决定一行内盒子在行内的垂直对齐 避开浮动 (float) 元素 # 块级排版上下文 Block Formatting Context...BFC 不会和浮动元素重叠 如果一个块级盒子夹在行级盒子内部,那么这个行级盒子会被拆成两个行级上下文,中间夹一个块级上下文。...flex-grow 设置拥有剩余空间时的伸展能力(注意:剩余空间不包括元素初始状态所占空间) flex-shrink 设置容器空间不足时收缩的能力(默认值为 1—— 即默认每个元素都能被压缩) flex-basis
在在这个博客中,我们将「探索 Flutter 中的五彩纸屑动画」。我们将看到如何实现五彩纸屑动画的演示程序,并在您的 flutter 应用程序中使用 「confetti」 包展示多彩的爆炸效果。...下面的demo中当用户点击按钮时,会出现五颜六色的五彩纸屑。 这个演示视频展示了如何在Flutter中创建五彩纸屑动画。...属性 「ConfettiController」:该属性不能为空。唯一需要的属性是 「ConfettiController」....「maxBlastForce」:此属性用于确定在粒子生命的前 5 帧内施加到粒子的最大爆炸力。默认 maxBlastForce 设置为“20”。...默认设置为“PI”(180 度)。PI 的值将发射到画布/屏幕的左侧。 「numberOfParticles」:此属性用于每次发射时发射。默认设置为“10”。
说明 size 逻辑像素,并不是物理像素,类似于Android中的...textScaleFactor 单位逻辑像素字体像素数,如果设置为1.5则比指定的字体大50%。...physicalDepth 设备的最大深度,类似于三维空间的Z轴。...accessibleNavigation 用户是否使用诸如TalkBack或VoiceOver之类的辅助功能与应用程序进行交互,用于帮助视力有障碍的人进行使用。..._2" style="zoom:50%;" /> 使用场景 根据尺寸构建不同的布局 SafeArea控件就是通过MediaQuery.of来实现的,平板和手机的(或者横屏和竖屏)布局可能是不一样的,比如如下布局
上节填完了 Scaffold 留下的坑,这节继续填坑,之前留下关于 Layout 的坑,又是一堆部件袭来 Container 为了让我们的界面更容易被扩展,通常会在最外层包裹一层 Container,其构造函数也不是很难理解...Flex,Row,Column 写 Android 的小伙伴应该比较常用 LinearLayout,在 Flutter 中用两个部件,Row Column来代替 Android 中的 LinearLayout...spaceBetween 两侧部件同上层容器间隔为 0,部件之间的间隔相等 // spaceEvenly 部件之间的间隔同两侧部件与上层容器间隔 MainAxisAlignment mainAxisAlignment...这边 Column 内部的子部件因为高度相同,如果不同还需要等分空间的话,就不可以通过设置 mainAxisAlignment 属性来实现了,这里介绍一个等分的部件 Expanded const Expanded...当然,在使用过程中也会遇到那么些坑,我们修改下代码,把 child 的代码修改成如下 child: Row( children: [ Text
也就说明使用 Builder 回调的上下文,是可以使用 MediaQuery.of(ctx) 获取到媒体信息的。 ? ? 到这里,你应该对上下文的层级有了一定的认识。...所有 Builder 组件就是做这个事的,回调一个较下层的上下文以供使用。...这时有两种方案:1,抽离组件,在下层组件的上下文中触发。 2, 使用 Builder 回调下层的上下文。由于这里东西很少,没必要新建个组件,使用 Builder 就很轻轻方便。...MaterialApp 内部使用了 WidgetsApp ? 在 _WidgetsAppState#build 中可以看到如果 builder 属性非空,会使用 Builder 组件。...---- 在 IconTheme 中的 merge 方法里也使用了 Builder 组件,这是为了在没有上下文的时候拿到上下文,这样就不需要在 merge 方法中传入上下文了,这也是上下文无中生有的使用方式
在 Flutter 应用开发过程中,状态管理、路由管理在应用框架中扮演着重要角色。目前主流的解决方案有 Google 官方的 Provider,三方的 GetX、Bloc、 fish-redux 等。...GetBuilder 进行包裹,这样使用 Controller 中的数据变化时,调用 update() 后就会刷新界面控件。...,key 为语言标识,格式为[国家]_[语言],value 是一个 Map,存放的就是我们实际的文字资源。...Get.context // 在你的代码中的任何地方,在前台提供 snackbar/dialog/bottomsheet 的上下文。...Get.contextOverlay // 注意:以下方法是对上下文的扩展。// 因为在你的UI的任何地方都可以访问上下文,你可以在UI代码的任何地方使用它。
,它必须要继承PopupRoute类: class PopRoute extends PopupRoute { // push的耗时,milliseconds为毫秒 final Duration...Popup类,Popup类接收一个上下文context,用来获取点击的控件的位置, OnItem就是我们的自定义类型声明回调,传了个String类型的值回去给上级接收,这个String类型的值就是赞或评论...color: Colors.transparent, // 它的颜色为透明色 ), new Positioned( child...,milliseconds为毫秒 final Duration _duration = Duration(milliseconds: 300); // 接收一个child,也就是我们push的内容...color: Colors.transparent, // 它的颜色为透明色 ), new Positioned( child
例如,您可以在平板电脑等设备中使用拆分视图来提供良好的用户体验并明智地使用大屏幕空间。!...Fragment,您可以将 UI 逻辑提取到单独的组件中,以便在为大屏幕尺寸设计多窗格布局时,您不必单独定义逻辑。您可以重用您为每个片段定义的逻辑。...4.矢量图形 与使用像素位图创建相反,矢量图形是在 XML 文件中定义为路径和颜色的图像。它们可以缩放到任何大小而不会缩放工件。在 Android 中,您可以将?...纵横比 您可以使用?AspectRatio小部件将子项调整为特定的纵横比。这个小部件首先尝试布局约束允许的最大宽度,然后通过将给定的纵横比应用于宽度来决定高度。...可以看到,在 Flutter 中创建拆分视图真的很容易。您只需使用 a 将它们并排放置Row,然后,为了填满整个空间,只需使用Expanded小部件包装两个视图。
following 选取文档中当前节点的结束标签之后的所有节点。 namespace 选取当前节点的所有命名空间节点 parent 选取当前节点的父节点。...(查找顺序为:先找到body节点的顶级节点(根节点),得到根节点标签前的所有同级节点,执行完成后继续向下一级,顺序得到该节点标签前的所有同级节点,依次类推。)...我们可以理解成少了一个循环,而只查找当前节点前的同级节点) //message[@id=1]//*[namespace::amazon] 查找id=1的所有message节点下的所有命名空间为amazon...//namespace::* 文档中的所有的命名空间节点。...若没有指定SelectionLanguage属性值为XPath则要注意以下情况: 数组下标从0开始(我们知道在XPath查询表达式中数组下标是从1开始的) 不支持在XPath查询表达式中使用XPath
方式二 使用Android Studio 创建Flutter Module,一直Next ?...屏幕快照 2019-12-17 14.54.23.png Flutter目录和iOS目录必须是同级目录 将Flutter模块嵌入到现有App 有两种方法可以将Flutter嵌入到现有应用程序中。...Radius.circular(20.0)), ), ), ); } void _getNativeMessage() async{ // 对应OC中的...> new LoginPage(), }, ); } } Flutter端传参数给OC void _getNativeMessage() async{ // 对应OC中的...String result; try { var map = { "userName": "develop","pwd":"123456"}; // OC回调中对应的
image.png 可以直接点击ListView的构造方法,跳转到455行可看到 1.当ListView的属性padding为空时,获取MediaQueryData的信息 2.因为ListView...的滚动方向默认为垂直,会使用mediaQueryVerticalPadding 3.sliver添加一层MediaQuery,这个表明sliver的子部件会使用该MediaQuery的值,根据判断,子部件会使用...都为0,该值会被子部件使用,所以可以知道,DrawerHeader使用了该值,导致statusBarHeader为0 mediaQueryVerticalPadding =>将原有的MediaQuery...image.png 当我点击AppBar中左边的按钮是发现,弹出了一个蒙版,Drawer并没有弹出来,这是怎么回事?别急,我们开启一下布局边界 ?...image.png 该代码比较简单: 1.先判断drawer是否为空,若不为空添加drawer _addIfNonNull该方法从命名可以看出若不为空添加到children里面 这里被添加了一个DrawerController
following 选取文档中当前节点的结束标签之后的所有节点。 namespace 选取当前节点的所有命名空间节点。 parent 选取当前节点的父节点。...preceding 选取文档中当前节点的开始标签之前的所有节点。 preceding-sibling 选取当前节点之前的所有同级节点。 self 选取当前节点。 ?...(查找顺序为:先找到body节点的顶级节点(根节点),得到根节点标签前的所有同级节点,执行完成后继续向下一级,顺序得到该节点标签前的所有同级节点,依次类推。)...我们可以理解成少了一个循环,而只查找当前节点前的同级节点) //message[@id=1]//*[namespace::amazon] 查找id=1的所有message节点下的所有命名空间为amazon...//namespace::* 文档中的所有的命名空间节点。