- 2022年闲鱼技术年度白皮书,包括Flutter主题,KUN主题,服务端主题,技术质量主题共计4大模块。0 112浏览免费
- flutter 总结及遇到的问题集合0 203浏览免费
- Flutter Projects.pdf0 72浏览会员免费
- Flutter 从0到1构建大前端5 235浏览¥ 5.90
- flutter webview 一直黑屏以及js调用失败0 301浏览¥ 9.90
- flutter音视频开发实践.pdf.pdf0 142浏览会员免费
- Flutter 跨平台开发框架.pdf0 193浏览¥ 9.90
- Flutter on Desktop.pdf0 120浏览¥ 9.90
- Flutter architectural overview0 79浏览会员免费
- 为什么我们需要跨平台开发?本质上,跨平台开发是为了增加代码复用,减少开发者对多个平台差异适配的工作量,降低开发成本,提高业务专注的同时,提供比web更好的体验。嗯~通俗了说就是:省钱、偷懒。本篇主要以react-native、weex、flutter,结合资讯展望,深入聊聊当前跨平台移动开发的实现原理、现状与未来。至于为什么只讲它们,因为对比ionic、phoneGap,它们更于“naive”( ̄ ̄)。超完整跨平台开源项目目前移动端跨平台开发中,大致归纳为以下几种情况:reactnative、weex均使用JavaScript作为编程语言,目前JavaScript在跨平台开发中,可谓占据半壁江0 198浏览会员免费
- 对于构建Flutter类型应用,因其开发语言Dart、虚拟机、构建工具与平时我们开发Native应用不同且平台虚拟机也不支持,所以需要FlutterSDK来支持,如构建Android应用需要AndroidSDK一样,下载FlutterSDK通常有两种方式:在官网下载构建好的zip包,里面包含完整的Flutter基础Api,DartVM,DartSDK等手动构建,CloneFlutter源码后,运行flutter--packagesget或其它具有检测类型的命令如build、doctor,这时会自动构建和下载DartSDK以及Flutter引擎产物在团队多人协作开发下,这种依赖每个开发本地下载F0 488浏览会员免费
- Vue(读音/vju:/,类似于view)是一套用于构建用户界面的渐进式框架特点:易用、灵活、高效全家桶:vue+components(vueelement/iview...)+vue-router+vuex+vue-cli类库:jquery、zepto、underscore...插件:dialog、banner、drag、tab、iscroll...组件:bootstrap、swiper...框架:backbone、angular、vue、react、uni-app、reactnative、flutter...命令式编程:命令“机器”如何去做事情(how),这样不管你想要的是什么(what)0 1016浏览会员免费
- flutter getx组件说明0 266浏览会员免费
- 为什么我们需要跨平台开发?本质上,跨平台开发是为了增加代码复用,减少开发者对多个平台差异适配的工作量,降低开发成本,提高业务专注的同时,提供比web更好的体验。嗯~通俗了说就是:省钱、偷懒。 本篇主要以react-native、weex、flutter,结合资讯展望,深入聊聊当前跨平台移动开发的实现原理、现状与未来。至于为什么只讲它们,因为对比ionic、phoneGap,它们更于 “naive”( ̄ ̄)。超0 49浏览会员免费
- 对于构建Flutter类型应用,因其开发语言Dart、虚拟机、构建工具与平时我们开发Native应用不同且平台虚拟机也不支持,所以需要Flutter SDK来支持,如构建Android应用需要AndroidSDK一样,下载FlutterSDK通常有两种方式:在官网下载构建好的zip包,里面包含完整的Flutter基础Api,Dart VM,DartSDK等手动构建,CloneFlutter源码后,运行flutter--packages0 48浏览会员免费
- 前言 Flutter是怎么启动起来的,是在Android的Activity的启动之后吗?等等这样的问题,在这个文章中将被解答。 从MainActivity开始 新创建一个Flutter项目,在清单文件中默认被启动的Activity是MainActivity,而MainActivity继承的是FlutterActivity。那么问题好像简单了,我们分析一下FlutterActivity,下面是MainActivity的代码。 public class MainActivity extends FlutterActivity { @Override protected void onC0 68浏览会员免费
- 前言 应用开发中经常会碰到网络图片的加载,通常我们会对图片进行缓存,以便下次加载同一张图片时不用再重新下载,在包含有大量图片的应用中,会大幅提高图片展现速度、提升用户体验且为用户节省流量。Flutter本身提供的Image Widget已经实现了加载网络图片的功能,且具备内存缓存的机制,接下来一起看一下Image的网络图片加载的实现。 重温小部件Image 常用小部件Image中实现了几种构造函数,已经足够我们日常开发中各种场景下创建Image对象使用了。 有参构造函数: Image(Key key, @required this.image, ...) 开发者可根据自定义的ImagePr0 315浏览会员免费
- 前言 我们平时在开发中的过程中通常都会获取屏幕或者 widget 的宽高用来做一些事情,在 Flutter 中,我们有两种方法来获取 widget 的宽高。 MediaQuery 一般情况下,我们会使用如下方式去获取 widget 的宽高: final size =MediaQuery.of(context).size; final width =size.width; final height =size.height; 但是如果不注意,这种写法很容易报错,例如下面的写法就会报错: import 'package:flutter/material.dart'; class Ge0 1714浏览会员免费
- Flutter是借鉴React的开发思想实现的,在子组件的插槽上,React有this.props.children,Vue有<slot></slot>。 当然Flutter也有类似的Widget,那就是Navigator,不过是以router的形式实现(像<router></router>???)。 Navigator的使用无非3个属性 initialRoute: 初始路由 onGenerateRoute: 匹配路由 onUnknownRoute: 404 在实现层面 首先:Navigator的高度为infinity。如果直接父级非最上级也是infinity会0 226浏览会员免费
- App功能介绍页,主要是由介绍app功能的几张图片和当前页指示符组成,如下效果 我们来一步一步实现上面的界面,左右滑动切换显示功能页,这个可以通过PageView来实现,底部的指示符半透明覆盖在PageView上,开发过Android同学知道可以用Framelayout布局来实现,Flutter上也有类似的控件Stack,我们先完成骨架代码 // An highlighted block void main() => runApp(App()); class App extends StatelessWidget { @override Widget build(BuildContex0 326浏览会员免费
- 一个发送验证码的需求:包括限制文本框输入长度和只允许输入数字 按惯例 先上图: class MyBody extends StatefulWidget { @override _MyBodyState createState() => _MyBodyState(); } class _MyBodyState extends State<MyBody> { bool isButtonEnable=true; //按钮状态 是否可点击 String buttonText='\u53d1\u9001\u9a8c\u8bc1\u7801'; //初始文本 int count=60; //初始倒计时时间 Timer time0 250浏览会员免费
- 在flutter 开发中用InkWell或者GestureDetector将某个组件包起来,已添加点击事件。 GestureDetector 使用点击无水波纹出现,InkWell可以实现水波纹效果。 正常情况下使用 : InkWell( //单击事件响应 onTap: () { }, child: Container( alignment: Alignment(0, 0), height: 28, width: 120, child: Text(InkWell单击事件), ), ), 如果在InkWell的上下都出现的颜色的设置,如上中的Co0 452浏览会员免费
- TextField 顾名思义文本输入框,类似于iOS中的UITextField和Android中的EditText和Web中的TextInput。主要是为用户提供输入文本提供方便。相信大家在原生客户端上都用过这个功能,就不在做具体介绍了,接下来还是具体介绍下Flutter中TextField的用法。 以下内容已更新到 github TextField的构造方法: const TextField({ Key key, this.controller, //控制器,控制TextField文字 this.focusNode, this.decoration: const0 226浏览会员免费
- 本文介绍了Flutter 实现下拉刷新上拉加载的示例代码,分享给大家,具体如下: 效果图 使用方法 添加依赖 dependencies: pull_to_refresh: ^1.5.7 导入包 import 'package:pull_to_refresh/pull_to_refresh.dart'; 页面代码样例 class _MyHomePageState extends State<MyHomePage> { List<String> items = [1, 2, 3, 4, 5, 6, 7, 8]; RefreshControlle0 73浏览会员免费
- 疫情刚好静下心来回归过去的工作,博主要开始学习flutter,博主会边学习边实战项目连续连贯实现,大约一周会出一篇,源码地址,开源不易,麻烦动手点星,谢谢,本开源不做商业使用,里面涉及用到api接口资源等只供学习,项目开发会分博客文章,请点击链接到对应的文章中浏览,建议其实万变不离其中,说到底还是离不开原生,学习之前往补充原生知识,本片主要讲的是创建项目、应用图标、启动页,再次感谢大家能耐心观看,谢谢! Flutter 开始征途1 创建项目1.1 studio 创建项目1.2 flutter 命令创建项目2 应用图标2.1 安卓、ios图标对比2.2 安卓尺寸详解2.3 ios尺寸详解2.40 215浏览会员免费
- 最近在用Flutter开发App项目,一切都是新的,一切都要学习。不过经过一段时间的开发适应和磨合,趋于稳定状态。本篇博文来分享一下Flutter设置App的应用名字和应用logo图标的方法,知识点虽然简单,但是不知道这个知识点就不行,所以还是要记录下来,分享一下。 其实,Flutter设置App的应用名称和图标是要分开来操作的,Android和iOS是分开设置对应的App名称和图标的,这一点一定要注意。也可以把Android和iOS的应用名称和图标分开设置,可以设置不一样,但是毕竟一个App为了保证一致性,还是不要这样做,老老实实保证Android和iOS两个端的应用信息保持一致吧。 Flu0 107浏览会员免费
- 最近需要做个平板的项目,然后需要直接横屏,有2种实现方式。 1, 随着屏幕旋转,布局自动调整。做横竖屏适配 2,强制屏幕横屏,不随着屏幕去调整 第一种方式这里就不做说明了。代码做适配就可以。 下面说一下第二种实现方式 Flutter 自带方式 flutter 为我们提供了方法来控制系统的横竖屏显示 SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight, DeviceOrientation.portraitUp,5 1707浏览¥ 9.90
- Flutter是什么? Flutter是Google一个新的用于构建跨平台的手机App的SDK。写一份代码,在Android 和iOS平台上都可以运行。 下面看下Flutter项目在 iOS14 启动崩溃的问题及解决方法 崩溃现象 在iOS14发布之后,运行APP就出现闪退,和机型没关,只要是iOS 14就必闪退 崩溃分析 1、启动就闪退,多起几次可能有一次没有问题。 2、启动后到某个页面卡死(必卡跳不过) 根本原因尚不明确,个人分析Product Name会影响Header Folder Path,可能是代码加载路径中出现中文会出问题。 解决方法 Xcode里,选择当前项目的TARGETS-5 2080浏览会员免费
- 前言 本篇文章 中写到的是 flutter 调用了Android 原生的 TextView 案例 添加原生组件的流程基本上可以描述为: 1 android 端实现原生组件PlatformView提供原生view 2 android 端创建PlatformViewFactory用于生成PlatformView 3 android 端创建FlutterPlugin用于注册原生组件 4 flutter 平台嵌入 原生view 1 创建原生组件 创建在fLutter工程时会生成几个文件夹,lib是放flutter工程代码,android和ios文件夹分别是对应的双平台的原生工程。 在这里直接打开An0 286浏览会员免费
- 一、安装flutter SDK 1、按照官网说明,获取flutter SDK 如图下载其最新可用的安装包 https://flutter.dev/docs/get-started/install/macos# 2、下载后,将安装包解压到你要安装的目录,如图,我放在了这里 3、添加flutter相关工具到path 打开终端输入命令行 vim ~/.bash_profile 如上图,输入a,将打开编辑模式,增加一行 export PATH=`pwd`/flutter/bin:$PATH `pwd`是你flutter的安装目录,同时将环境变量添加到文件中 export PUB_HOSTE0 457浏览会员免费
- Google 对 Flutter 的目标一直是提供一个可移植的工具包,以构建媲美本机速度运行的精美UI,无论您使用的是哪个平台。为了验证该功能,我们首先关注于Android和iOS移动平台,我们已经在Google Play上看到了8万多个快速,精美的Flutter应用程序。 为了获得成功,一年多来,我们一直将重点扩展到包括桌面级体验,包括针对Web和桌面操作系统(macOS,Windows和Linux)的体验。这项工作包括对引擎进行广泛的重构,以支持桌面样式的鼠标和键盘输入,以及可调整大小的顶级窗口。它还包括新的UI功能,可以很好地适应桌面,例如Material Density支持和Navig0 144浏览会员免费
- 文件结构: 内容承接 https://blog.csdn.net/u013227399/article/details/103858613 main.dart import 'package:flutter/material.dart'; import 'routes/Routes.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp(0 112浏览会员免费
- 文件结构: 内容承接:https://blog.csdn.net/u013227399/article/details/103787189 main.dart import 'package:flutter/material.dart'; import 'routes/Routes.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp(0 511浏览会员免费
- 原来的布局是这样: return new Scaffold( appBar: new AppBar( title: new Text(界面一), ), body: Padding( padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 24.0), child: Form( key: _formKey, //设置globalKey,用于后面获取FormState autovalidate: true, //开启0 807浏览会员免费
- 代碼: // This is a basic Flutter widget test. // // To perform an interaction with a widget in your test, use the WidgetTester // utility that Flutter provides. For example, you can send tap and scroll // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text,0 83浏览会员免费
- 参数详解 属性 说明 value 当前值 默认 0 — 1 之间 onChanged 滑动监听 onChangeStart 滑动前监听 onChangeEnd 滑动后监听 min 最小值 默认 0 max 最大值 默认 1 divisions 分段个数 label 滑动时 显示的文字 (不设置divisions属性 不显示) activeColor 滑块轨道活动部分的颜色 inactiveColor 滑块轨道不活动部分的颜色 semanticFormatterCallback Flutter 还提供了仿苹果的0 332浏览会员免费
- 接上一个文章,我们还是进行控件的封装。 我们要自己实现一个AppBar控件,要知道我们AppBar控件有自己的高度,那么要实现自己的封装还要进行一个接口的实现 PreferredSizeWidget,当然你也可以用相关的控件把他包起来。 话不多说上代码: import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_app_pneumonia/config/const.dart'; class ComMomBar extends Stateless0 84浏览会员免费
- 简介 我们知道AnimationController.forward()可以正向播放动画,AnimationController.reverse()可以反向播放动画,播完即停止。若想让动画播完还可以重新播放不断循环,可以调用 AnimationController.repeat():从头开始循环 AnimationController.repeat(reverse: true):反向循环,从头播到尾,再从尾播到头 若要让动画停止,可以调用AnimationController.stop()方法 示例 下面的示例中有一个绿色的方形,其宽高从100变大到200,然后再重头开始,不断循环 放款中间0 1407浏览¥ 9.90
- flutter wrap组件 写的搜索记录 import 'dart:core'; import 'package:flutter/material.dart'; // 使用换行 显示搜索记录 class WarpPage extends StatelessWidget { final List tags = [ 肯德基, 小哥哥你的东西掉了, 小姐姐好漂亮啊, 这个东西是啥, 哈哈哈, 好困啊, 今天好运, 明天好运来, 今年快结束了, 我累啊, 你写的什么代0 193浏览会员免费
- import 'dart:io'; import 'package:flutter/material.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('FlutterDemo'), )0 62浏览会员免费
- import 'package:flutter/material.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; class TranformWebViewBottom extends StatefulWidget { @override _TranformWebViewBottomState createState() => _TranformWebViewBottomState(); } class _TranformWebViewBottomState extends State {0 233浏览会员免费
- flutter监听滚动以及去除padding 需求:需要将搜索框固定在页面上,然后监听下拉的距离,搜索框由透明完全显示 1.移除padding: MediaQuery.removePadding( removeTop: true, // 这个参数是必须的 removeBottom removeLeft removeRight context: context, child: ... ) 2.监听列表滚动 import 'package:flutter/material.dart'; import 'package:flutter_swiper/flutter_swiper.dart';0 217浏览会员免费
- // 卡片练习布局 import 'package:flutter/material.dart'; void main() => runApp(new MyApp()); class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } // 两张卡片组件 练习布局 class _MyAppState extends State { @override Widget build(BuildContext context) { return Materi0 85浏览会员免费
- easy_refresh git地址 ###效果图 引入和本地化处理 yaml flutter_localizations: sdk: flutter flutter_easyrefresh: ^2.0.9 main //main导入 import 'package:flutter_easyrefresh/easy_refresh.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; //MaterialApp localizationsDelegates: [0 335浏览会员免费
- main.dart //导入了Material UI组件库 ,快捷操作fim import 'package:flutter/material.dart'; void main() { runApp(TextFieldPage()); } //自定义组件 //StatelessWidget:无状态组件,状态不可变的widget //StatefulWidget:有状态组件,状态可以改变 //fluter中一切都是组件 //使用MaterialApp和Scaffold 两个组件装饰App //MaterialApp一般作为根组件----home、title、color、theme、rout0 60浏览会员免费
- 文件结构: 内容承接:https://blog.csdn.net/u013227399/article/details/103859886 home.dart import 'package:flutter/material.dart'; class HomePage extends StatefulWidget { HomePage({Key key}) : super(key: key); @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends St0 128浏览会员免费
- BOTTOM OVERFLOWED BY 17 PIXELS 这是由于页面高度写死导致的, 1.scaffold 根布局添加 resizeToAvoidBottomPadding:false 是否自动调整body属性控件的大小,以避免脚手架底部被覆盖。例如,如果在脚手架上方显示屏幕键盘,则可调整body属性控件的大小以避免被键盘覆盖。如果你不需要此功能,可以将resizeToAvoidBottomPadding属性设置为false @override Widget build(BuildContext context) { return Scaffold( r0 2877浏览会员免费
- 本篇博客大致介绍了通过 Flutter 实现一些简单的页面布局,官方的参考文档: https://flutter.cn/docs/get-started/flutter-for/web-devs 首先,项目的入口如下,后面的所有操作都是对 container 变量进行更改 import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @0 300浏览会员免费
- 基本使用 //导入了Material UI组件库 ,快捷操作fim import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } //自定义组件 //StatelessWidget:无状态组件,状态不可变的widget //StatefulWidget:有状态组件,状态可以改变 //fluter中一切都是组件 //使用MaterialApp和Scaffold 两个组件装饰App //MaterialApp一般作为根组件----home、title、color、theme、routes等 class MyA0 294浏览会员免费
- import 'package:flutter/material.dart'; class TabsComponent extends StatefulWidget { @override State createState() => new TabsComponentState(); } class TabsComponentState extends State { int _selectedIndex = 0; final List _children = [ new PlaceholderWidget('Home'), new PlaceholderWi0 1257浏览¥ 9.90
- flutter好用的轮子推荐四-可定制的图片预览查看器photo_view flutter九宫格图片查看器 效果图 关于九宫格布局实现 JhPhotoAllScreenShow 代码 import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; import 'package:photo_view/photo_view_gallery.dart'; const Color selColor =Colors.white; const Color otherColor = Colors.g5 2854浏览¥ 9.90
- import 'package:flutter/material.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('FlutterDemo'), ), body: La0 102浏览会员免费
- 我们假设一种情况,如果应用程序使用条形图显示给定年份的产品类别的销售额,用户可以选择另一年,然后该应用程序将动画到该年的条形图。如果产品类别在两年内是相同的,或者恰好是相同的,除了在其中一个图表中右侧显示的其他类别,我们可以使用我们现有的代码。但如果公司在2016年有A,B,C和X类产品,但是在2017年中断了B并推出了D? 动画效果可以做得非常好看,但仍然会让用户感到困惑。为什么?因为它不保留语义。它将表示产品类别B的图形元素转换为代表类别C的一个图形元素,而将C的图形元素转换到其他地方。正因为2016 B恰好是在2017 C后来出现的同一位置,并不意味着前者应该变成后者。相反,2016年0 42浏览会员免费
- Stack即层叠布局控件,能够将子控件层叠排列。 Stack控件的每一个子控件都是定位或不定位,定位的子控件是被Positioned控件包裹的。Stack控件本身包含所有不定位的子控件,其根据alignment定位(默认为左上角)。然后根据定位的子控件的top、right、bottom和left属性将它们放置在Stack控件上。 import 'package:flutter/material.dart'; class LayoutDemo extends StatelessWidget { @override Widget build(BuildContext context) {0 137浏览会员免费
- 简介 现在我们的 APP 上面都会在屏幕下方有一排的按钮,点击不同的按钮可以进入不同的界面。就是说在界面的底部会有一排的按钮导航。可看下面的图示。 完成图示 程序工程目录 梳理下实现步骤 我们需要实现这个底部菜单导航,就需要有底部菜单的那一排图标按钮。图标按钮是固定在一个工具栏 “bar” 上面。然后呢,需要分别需要有按钮对应的界面,就是说按钮有多少个,那么界面需要对应的有多少个。我们来一个清单列表: 按钮图标区域。由于展示的方式都是一样的,我们需要有一个单独的控件,循环出来就好。 工具栏区域。用于展示按钮图标,并且能固定在底部。 首页。用于将工具栏放入界面中,并且将按钮0 159浏览会员免费
- Flutter是Google使用Dart语言开发的移动应用开发框架,使用一套Dart代码就能构建高性能、高保真的iOS和Android应用程序,并且在排版、图标、滚动、点击等方面实现零差异。 2年前,RN刚出来时做了个仿拉钩的demo,react-native-lagou. 这次flutter来了,想感受一下,索性用目前flutter的版本写的一个仿boss直聘应用。 时间有限,没完全仿照,去掉了一些功能,但是界面风格一致,有参考价值。 github地址:flutter仿boss直聘. 感悟 与一些文章里介绍的非常相似,如果会RN,那么学起来会很快,flutter借鉴了RN的组件化思想,0 312浏览会员免费
- 在上一篇文章:Flutter进阶—实现动画效果(二)的最后,我们实现了一个控件,其中包含各种布局和状态处理控件。以及使用自定义的动画感知绘图代码绘制单个Bar的控件。还有一个浮动按钮控件,用于启动条形图高度的动画变化。 现在开始向我们的单个条形添加颜色,在Bar类的height字段下添加一个color字段,并且更新Bar.lerp以使其两者兼容。在上一篇文章中,介绍过“lerp”是“线性内插”或“线性插值”的一种简短形式。 class Bar { Bar(this.height, this.color); final double height; final Color color;0 82浏览会员免费
- 问题描述 Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象,白屏的时长由设备的性能决定,设备性能越差,白屏时间越长。 问题分析 其实启动白屏的问题在Android原生应用上也是一个常见问题,大致是因为从用户点击 Launcher Icon 到应用首页显示之间,Android 系统在完成应用的初始化工作,其流程如下: 在 Flutter Android 端上,白屏的问题会更加严重,因为除了 Android 应用启动耗时外,还增加了 Flutter 初始化耗时。 直到 Flutter 渲染出第一帧内容,用户才能感知到App启动完成。 解决方案 解决方案很简单,And0 332浏览会员免费
- 本文实例为大家分享了Flutter实现底部导航栏的具体代码,供大家参考,具体内容如下 效果 实现 先将自动生成的main.dart里面的代码删除, import 'package:flutter/material.dart'; import 'package:flutter_guohe/pages/main.dart'; void main() { runApp(new Guohe()); } 创建app.dart作为首页的页面文件 class Guohe extends StatefulWidget { @override GuoheState createState() =>0 128浏览会员免费
- 模态底部面板是菜单或对话框的替代方案,可防止用户与其他控件进行互动,可以使用showModalBottomSheet函数创建和显示模态底部面板。 import 'package:flutter/material.dart'; class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text('底部面板') ), body: new Center0 61浏览会员免费