flutter 日常采坑

记录一下用flutter开发过程中遇到的问题,随缘更新~ DropdownButton 去掉分割线 DropdownButton的默认分割线,在自身是没办法取消的。在我怀疑Google硬编码的时候,发现了DropdownButtonHideUnderline,DropdownButton的分割线就是通过DropdownButtonHideUnderline实现的,灵机一动用DropdownButtonHideUnderline包裹DropdownButton同时取消了颜色属性,果然DropdownButton的分割线没有了。 DropdownButtonHideUnderline( child: DropdownButton( iconSize: 0, items: itemList, hint: hit, isExpanded: true, onChanged: change, ), )

四月 30, 2019 · 1 分钟 · LengYue

Flutter ListView嵌套不显示布局解决方案

在Flutter中 如果使用 listview 嵌套 listview(gridView) 的方式(其实不是很推荐这么写)直接写 会发现布局不显示。 搜索一下基本上解决方法都是给内部的 listview 设置一个高度,但是针对高度不固定的listview这种方式基本无效,而且设置固定高度后 listview 的性能会有额外开销(因为不可见的item不能被回收了) 解决方法 其实查找一下源码,就可以发现官方已经给出了解决方法,在注释里: /// Here are two brief snippets showing a [ListView] and its equivalent using /// [CustomScrollView]: /// /// ```dart /// ListView( /// shrinkWrap: true, /// padding: const EdgeInsets.all(20.0), /// children: <Widget>[ /// const Text('I\'m dedicating every day to you'), /// const Text('Domestic life was never quite my style'), /// const Text('When you smile, you knock me out, I fall apart'), /// const Text('And I thought I was so smart'), /// ], /// ) /// ``` 所以比较简单了,直接在子listview中加上shrinkWrap: true属性:...

三月 19, 2019 · 1 分钟 · LengYue

在非主module中引用aar的问题

引用aar的方法 把aar文件放到 libs 目录下面,并且在对应的 module 项目下面 build.gralde 中添加如下配置: repositories { flatDir { dirs 'libs' } dependencies { // 其中aar-file-name不用文件后缀名 compile(name: 'aar-file-name', ext: 'aar') } 编译提示: Error:Unable to resolve dependency for ':app@debug/compileClasspath': Could not find :XXXX:. 解决: 在主(一般就是app)module下同样配置aar的目录 /**子模块含有aar*/ repositories { flatDir { dirs 'libs','../yourmodule/libs' //aar所在的路径 } } 同样 在其他module下如果需要使用这个aar,同样需要配置路径 这种方式最方便,但是在使用和查阅起来也不是很清晰。 将aar作为module使用。 具体做法,打开Project Structure(CMD+; 或者 ctrl+;)选择添加新的module然后选择import aar/jar 然后在需要的module这种引入即可。在主module中不需要在申明路径...

二月 18, 2019 · 1 分钟 · LengYue

Android中使用FutterView的相关问题(一)

Flutter从Main开始启动,启动的时候需要最外层是MaterialApp void main() => runApp(_widgetForRoute(window.defaultRouteName)); Widget _widgetForRoute(String route) { return MaterialApp( color: Colors.white, theme: ThemeData( primarySwatch: Colors.blue, ), home: findHome(route), ); } Widget findHome(String route) { switch (route) { case 'index': return IndexMain(); case 'detail': return ProductDetail(); default: return Center( child: Text('Unknown route: $route', textDirection: TextDirection.ltr), ); } } 如果背景是黑色的使用caffold嵌套 如果文字有黄色下划线,原因是theme的问题,两种方式: 使用顶层Material嵌套(推荐,使用这种方式,原生端页面展示会比其他的好看的) 对Text添加Style: style: new TextStyle(decoration: TextDecoration....

十二月 13, 2018 · 2 分钟 · LengYue

Flutter 常用 Widget 属性

TextStyle const TextStyle({ this.inherit: true, // 为false的时候不显示 this.color, // 颜色 this.fontSize, // 字号 this.fontWeight, // 字重,加粗也用这个字段 FontWeight.w700 this.fontStyle, // FontStyle.normal FontStyle.italic斜体 this.letterSpacing, // 字符间距 就是单个字母或者汉字之间的间隔,可以是负数 this.wordSpacing, // 字间距 句字之间的间距 this.textBaseline, // 基线,两个值,字面意思是一个用来排字母的,一人用来排表意字的(类似中文) this.height, // 当用来Text控件上时,行高(会乘以fontSize,所以不以设置过大) this.decoration, // 添加上划线,下划线,删除线 this.decorationColor, // 划线的颜色 this.decorationStyle, // 这个style可能控制画实线,虚线,两条线,点, 波浪线等 this.debugLabel, String fontFamily, // 字体 String package, }) : fontFamily = package == null ?...

十二月 13, 2018 · 5 分钟 · LengYue

Flutter中嵌入Native组件

Flutter官方提供的控件AndroidView、UiKitView就是一种比较优雅的解决方案了。这里做了一个简单的嵌入TextView的demo(使用这种方式会增加性能上的开销,应该尽量避免使用) 使用方式 native端 跟MethodChannel的使用方法类似,在native侧,我们实现一个PlatformViewFactory(iOS是FlutterPlatformViewFactory),在create方法中,使用平台方法创建View返回。 override fun create(context: Context?, i: Int, any: Any?): PlatformView { return object : PlatformView { override fun getView(): View { val text = TextView(context) text.layoutParams = ViewGroup.LayoutParams(SizeUtils.dp2px(200f), SizeUtils.dp2px(200f)) text.apply { setText("Android View") setTextColor(Color.BLUE) setBackgroundColor(Color.RED) } return text } override fun dispose() { } } } func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?...

十二月 7, 2018 · 1 分钟 · LengYue

Flutter和原生Android控件对比

Flutter和原生Android控件对比: Flutter控件 Android控件 AppBar ActionBar/ToolBar ListView ListView/RecyclerView Text TextView Center ViewGroup FloatingActionButton FloatingActionButton(design库里面的) BottomNavigationBar BottomNavigation(design库里面的) RaisedButton/Button Button Column LinearLayout的android:orientation=“vertical” Row android:orientation=“horizontal” DecorationImage ImageView Image ImageView Stack FrameLayout/RelativeLayout Container RelativeLayout CustomMultiChildLayout RelativeLayout Algin alginParentXXX属性 resizeToAvoidBottomPadding android:windowSoftInputMode=”adjustResize属性 SingleChildScrollView ScrollView CustomScrollerView Recyclerview Image里面的BoxFit参数介绍:(相当于Android的ImageView的scaleType参数)...

十二月 6, 2018 · 1 分钟 · LengYue

Flutter的需要与原生交互的一些常用库

Flutter的需要与原生交互的一些常用库 【说明】由于这些库一直在更新,请自己选择合适的稳定版本下载。 谷歌官方的针对Dart语言的一些实用性的功能以及扩展的库 – Quiver Quiver是一组针对Dart的实用程序库,它使使用许多Dart库变得更容易、更方便,或者增加了额外的功能。 github地址 https://github.com/google/quiver-dart 使用方式: dependencies: quiver: '>=2.0.0 <3.0.0' 根据pubspec.yaml中设置的目录模板自动向其中添加文件记录的脚本 asset_generator 好多人都说Flutter中的资源引用很头疼,手写很麻烦,最近找到了一个脚本刚好卡呀解决这个问题。 这个脚本的作用:利用asset_generator脚本生成r.dart 资源文件,方便在代码中引用资源。 github地址: https://github.com/flutter-dev/asset_generator 使用方式: 1.下载 asset_generator.dart 脚本文件。 2.找到自己Flutter的安装目录,将脚本放在Flutter的根目录下。 👉 另外关于pubspec.yaml文件,它很严格,很多人会写错,多一个或者少一个空格都会报错。刚好我找到了一个在线监测工具https://www.bejson.com/validators/yaml/ 把你的yaml文件复制进去 就可以自动帮你找出错误了。 常用开源包: 网络请求 库名 版本号 链接 描述 http 0.11.3+16 https://pub.dartlang.org/packages/http 该软件包包含一组高级函数和类,可以轻松使用HTTP资源。它与平台无关,可以在命令行和浏览器上使用。 dio 0.0.14 https://pub.dartlang.org/packages/dio Dart的一个强大的Http客户端,支持拦截器、全局配置、FormData、请求取消、文件下载、超时等。 http_multi_server 2.0.5 https://pub.dartlang.org/packages/http_multi_server dart:io HttpServer包装器,用于处理来自多个服务器的请求 类型编解码的库:...

十二月 6, 2018 · 4 分钟 · LengYue