
flutter
Mr_Tony
这个作者很懒,什么都没留下…
展开
-
Flutter中开发TV时候焦点错乱问题
Flutter的Tv开发时候的焦点错乱问题原创 2023-02-10 23:34:24 · 776 阅读 · 0 评论 -
Flutter开发中使用的部分插件
文章目录1、国际化插件 Flutter Intl2、快速联想插件 Flutter Snippets3、Flutter中的根据json生成实体类FlutterJsonBeanFactory1、国际化插件 Flutter Intl 使用参考链接: https://blog.youkuaiyun.com/u011272795/article/details/1081144872、快速联想插件 Flutter Snippets 这是一个可以快速生成Flutter代码的插件,一般我们新建一个dart页面后什原创 2021-03-04 15:14:44 · 762 阅读 · 1 评论 -
Flutter下打包IOS遇到的部分问题
文章目录一、找不到Pods-Runner.debug.xcconfig文件二、目标版本过低三、bitcode bundle could not be generated because 调用第三方库造成一、找不到Pods-Runner.debug.xcconfig文件错误日志:error: could not find included file ‘Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig’ in search pa原创 2021-02-18 18:12:19 · 3151 阅读 · 0 评论 -
Flutter 自定义对话框的示例
文章目录一、前言二、代码一、前言虽然官方已经提供了一些简单的对话框,但是在实际业务中往往需要我们自己定义一些对话框,本文示例代码主要作用是为了在实际开发中快速参考修改的作用,代码如下:二、代码本段代码是一个对话框工具类,具体的对话框内容可以由外部传入。import 'package:flutter/material.dart';//广告对话框的工具类class DialogAdCompat{ static final _dialogAdCompat = DialogAdCompat._i原创 2021-02-09 15:55:02 · 406 阅读 · 0 评论 -
Flutter 中libflutter.so库无法找到的问题
配置以下代码 defaultConfig { ndk { // Filter for architectures supported by Flutter. // 最好加上这个来避免libflutter.so无法生成 abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64' } }...原创 2021-02-08 10:11:31 · 1214 阅读 · 0 评论 -
Flutter中http库的一些基本请求
文章目录一、前言二、基本用法1、post请求2、get请求3、文件上传三、参考链接一、前言在Flutter中进行网络请求通常使用http和dio来处理。http是dart开发的多平台网络请求,而dio是flutter中文社区开发的(https://flutterchina.club)。一般来说根据官网的教程来的话,会使用http来进行网络请求。这里对http的常用网络请求做一个基本的演示,以便达到实际开发中快速使用的目的。二、基本用法1、post请求post请求是开发中经常使用的请求,主要是可以携原创 2021-02-02 10:03:28 · 1161 阅读 · 0 评论 -
Windows7上面Flutter的SDK升级问题
文章目录一、前言二、升级PowerShell三、参考链接一、前言由于Flutter更新了几个版本,所以这里也升级一下,之前的版本是1.22.4的Stable版本,现在最新版本是1.22.6。这里采用了flutter upgrade的命令进行升级,但是报了一些错,然后就懒省事,直接又去官网下了一个最新的压缩包进行替换,然后在Android Studio那里出现了SDK不完整的提示…。后面发现1.22.6的SDK竟然比1.22.4的SDK少了一半…。下面记录下升级的步骤二、升级PowerShell新版本原创 2021-02-01 09:53:38 · 634 阅读 · 0 评论 -
Flutter中PlatformView组件无法刷新的问题
在Flutter中我们经常使用PlatformView来进行原生组件的绘制,但是倘若使用setState()进行页面刷新时候,虽然页面刷新了,但是PlatformView还是使用的之前的组件。这种情况一般出现在PlatformView组件中请求数据然后再进行显示的时候。这时候即使刷新了,页面依然显示上一次的内容。解决方式也比较简单,给原生组件设置一个唯一的key就好了。通过唯一的key来使两次对比的内容不一样,将上一次的给销毁掉,示例代码如下:AndroidView( key: UniqueK原创 2021-01-29 18:30:48 · 1106 阅读 · 0 评论 -
Flutter常用的第三方库整理
文章目录1、下载模块flutter_xupdate2、图片拍照和选择image_picker3、滚轮选择flutter_datetime_picker4、手机IP获取dart_ipify5、对html解析为文本的库flutter_widget_from_html6、对于金钱数值的处理money27、生成手机标志uuid8、发布/订阅事件总线event_bus9、应用信息的获取package_info10、对于微信SDK的封装处理fluwx11、AES加密encrypt12、字符串占位符sprintf13、状原创 2021-01-29 10:19:14 · 3379 阅读 · 0 评论 -
Flutter 滚动布局的几种常见效果处理
文章目录一、滚动布局嵌套Column布局二、强制子控件充满屏幕一、滚动布局嵌套Column布局有这么一种效果,编写的Column列表布局或者其它控件布局,如果超过屏幕的话需要能够进行上下滚动,或者如果弹出输入框的时候屏幕不会出现控件超出屏幕的问题。在这里主要是使用SingleChildScrollView进行解决。效果如下:代码如下:class ScrollColumn extends StatelessWidget { @override Widget build(BuildConte原创 2021-01-28 15:55:53 · 5432 阅读 · 0 评论 -
Flutter 使用http库进行文件上传
文章目录一、前言二、代码演示三、源码示例四、参考代码一、前言实际开发中,我们会用到文件上传功能,这里通过简单的代码演示,达到实际开发中快速使用的目的二、代码演示 _uploadFile(String filePath) async{ String url = "http://39.106.158.176:9010/user/upload_headpic?uid=725304943665217536&token=1"; print("YM------->上传的路径:$u原创 2021-01-27 14:54:58 · 1626 阅读 · 0 评论 -
Flutter页面传递中文参数问题
传递的中文需要使用Uri.encodeComponent(content);进行转码,但是接收方并不需要解码完整示例代码如下:var content = Uri.encodeComponent(“人”); // To encode url print("传递的中文内容为:$content"); var params = { "withdrawResultStatus":result, "withdrawResultErrorMessage":content,原创 2021-01-20 13:41:33 · 1391 阅读 · 0 评论 -
Flutter中常用的按钮效果
本文整理一些实际开发中常用但是写法比较复杂的按钮效果本文整理一些实际开发中常用但是写法比较复杂的按钮效果文章目录一、渐变色的按钮效果二、带边框的按钮一、渐变色的按钮效果效果如下:代码如下: Container( margin: const EdgeInsets.symmetric(horizontal: 10,vertical: 10), width: 90, height: 37,原创 2021-01-20 11:32:50 · 1461 阅读 · 0 评论 -
Flutter 中Text的一些用法示例
本文整理一些项目中常用但是写法比较复杂的Text效果文章目录一、字体间隔和行间隔设置二、文本居中显示三、多行文字进行省略本文整理些日常开发中常用但是写起来比较复杂的效果示例一、字体间隔和行间隔设置效果如下:代码如下:Text("我们将在2小时内,将提现\n金额转入您的微信账户", textAlign: TextAlign.center,//文本居中 style: TextStyle( fontSize: 14, color: ColorStore.c_999,原创 2021-01-20 11:08:16 · 1014 阅读 · 0 评论 -
Flutter中使用Gradle4.0版本打包出错
Flutter中使用Gradle4.0版本打包出错一、前言在把Gradle插件升级到4.0以上版本时候会出现release版本打包失败的问题。由于新建项目时候会默认为最新的版本,所以这时候可能会默认出现该错误,错误如下:Transform’s input file does not exist: E:\flutterWorkSpace\flutter_dq_app\build\app\intermediates\flutter\huaweiDebug\libs.jar. (See https://is原创 2021-01-14 10:46:20 · 1177 阅读 · 2 评论 -
Flutter错误:setState() or markNeedsBuild() called during build.
有时候进行Flutter刷新的时候会出现以下错误,Unhandled Exception: setState() or markNeedsBuild() called during build.E/flutter (15679): This Overlay widget cannot be marked as needing to build because the framework is already in the process of building widgets. A widget c原创 2021-01-14 09:58:03 · 3232 阅读 · 0 评论 -
Flutter修改状态栏的颜色
文章目录一、前言二、代码三、无法实现的功能一、前言实际开发中我们会遇到设置状态栏的问题,状态栏整体是比较简单的。但是有些功能是实现不了的,这里给出简单的代码演示,以及告诉哪些功能是实现不了的二、代码void main() async{ runApp(MyApp()); if (Platform.isAndroid) { // 以下两行 设置android状态栏为透明的沉浸。写在组件渲染之后,是为了在渲染后进行set赋值,覆盖状态栏,写在渲染之前MaterialApp组件会覆盖掉这个值原创 2021-01-12 16:45:25 · 588 阅读 · 0 评论 -
Flutter的局部刷新-StatefulBuilder
文章目录一、前言二、演示代码三、参考链接一、前言在Flutter中用到setState(() {});来进行刷新,不过这种方式常常会导致整个UI进行刷新在性能上不是很好,因此官方提供了StatefulBuilder来进行局部刷新二、演示代码import 'package:flutter/material.dart';void main() => runApp(MyApp());///StatefulBuilder测试class MyApp extends StatelessWidge原创 2021-01-08 11:03:08 · 1872 阅读 · 0 评论 -
Flutter中的数据改变监听ChangeNotifier
文章目录一、前言二、演示代码三、总结一、前言在Flutter中有时候需要监听数据改变,在这里可以使用ChangeNotifier进行监听二、演示代码首先定义一个继承ChangeNotifier的数据类,代码如下:Counter.dartclass Counter extends ChangeNotifier{//这里也可以使用with来进行实现 int _count = 0;//数值计算 int get count => _count; addCount(){ _c原创 2021-01-08 09:52:51 · 18868 阅读 · 0 评论 -
Flutter 对路由变化的监听-NavigatorObserver
文章目录一、前言二、代码一、前言有时候需要对程序路由栈变化进行监听,这里可以使用NavigatorObserver来进行处理,使用该代码可以获取当前栈中页面层数和判断是否是到了最后一个页面,不过大部分情况下是用不到这个类的。代码如下:二、代码先定义一个继承NavigatorObserver的单独的类navigator_test.dartimport 'package:flutter/material.dart';///导航栈的变化监听class MyNavigator extends Na原创 2021-01-06 13:55:42 · 7728 阅读 · 2 评论 -
Flutter中应用前后台切换监听-WidgetsBindingObserver
文章目录一、前言二、代码一、前言在应用中有时候会需要判断程序的前后台状态,这里主要使用WidgetsBindingObserver进行判断。对于前后台判断的情况也只是WidgetsBindingObserver中的一种功能。对于WidgetsBindingObserver需要注意两点:最好是最先进入而且不会销毁的页面,这样可以判断整个程序的前后台状态WidgetsBindingObserver要写在被MaterialApp或者其它主题包裹的地方二、代码import 'package:flut原创 2021-01-06 11:31:36 · 7662 阅读 · 0 评论 -
Flutter 列表中的item设置阴影后进行滑动,阴影会消失
解决的方式是将外部留出阴影显示的区域就可以了。具体示例如下:Container( child: Container( margin: const EdgeInsets.symmetric(vertical: 0,horizontal: 2),//距离外边距 padding: const EdgeInsets.all(18), decoration:BoxDecoration( color: Colors.white,原创 2021-01-05 18:28:02 · 686 阅读 · 0 评论 -
Navigator中命名路由使用中的问题
Could not find a generator for route RouteSettings("/page2", null) in the _WidgetsAppState.原创 2021-01-05 13:53:37 · 2775 阅读 · 0 评论 -
Flutter中清空栈的方式(fluro和Flutter原生)
在Flutter中有时候会出现一种需求,比如跳转到某个页面同时清空所有页面这里使用fluro来进行解决相关代码如下: Routes.router.navigateTo(context, '/login',clearStack: true,transition: TransitionType.fadeIn);其中的clearStack就是表示是否清空所有栈的意思...原创 2021-01-04 16:29:04 · 3594 阅读 · 1 评论 -
Flutter中的局部刷新-ValueNotifier和ValueListenableBuilder
文章目录一、前言二、单个数据的刷新三、多个数据的监听四、自定义数据的监听五、参考链接一、前言在Flutter中通常刷新UI是使用setState(() {});进行刷新,只是这种方式会让UI进行全局刷新,对于比较复杂的页面来说,如果仅仅是改变其中一小部分的UI来说进行刷新是不恰当的,因此官方提供了ValueNotifier来进行刷新。ValueNotifier是一个泛型,所以可以传递各种数据。ValueNotifier不仅仅可以进行单个组件的刷新,也可以同时被多个组件进行监听,还可以对自定义数据进行处理原创 2021-01-04 11:11:05 · 4717 阅读 · 0 评论 -
Flutter中的数据共享-InheritedWidget
文章目录一、前言二、代码演示三、参考链接:一、前言在Flutter中有时候我们要对数据进行共享,比如某个数据改变了,监听该数据的UI也可以进行刷新。官方提供了InheritedWidget组件来对此进行处理。以下通过定义一个组件点击按钮使数据改变的功能来进行演示。二、代码演示SaveDataWidget.dart首先定义一个继承InheritedWidget抽象类的数据保存类,代码如下://保存数据的地方class SaveDataWidget extends InheritedWidget{原创 2021-01-04 10:04:56 · 277 阅读 · 0 评论 -
Flutter使用RouteObserver配合RouteAware对Widget栈的监听
文章目录一、前言二、代码演示一、前言Flutter中没有像Android一样有onPause()、onResume()函数,但是他提供了其它的方式对当前页面进行监听,因为Flutter中都是以Widget进行展示的,其实也是对Widget栈的监听。在Flutter中主要是用RouteObserver对实现了RouteAware接口的Widget进行监测,RouteObserver需要在MaterialApp进行初始化,而RouteAware则需要在子页面中进行监听。在此需要注意两点:RouteOb原创 2020-12-29 14:23:50 · 3733 阅读 · 0 评论 -
Flutter中如何限制widget重新build
文章目录一、演示程序介绍二、使用缓存变量处理重新build的问题三、使用const处理重新build问题一、演示程序介绍有时候在开发中会出现多次build的情况,通常没什么问题,但是偶尔会导致数据重新初始化,这样就比较麻烦,所以以下给出几种解决重新build问题的方式。首先来看一个简单的没有处理的代码:import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends Stat原创 2020-12-28 14:18:03 · 1573 阅读 · 0 评论 -
Flutter中回调函数
文章目录一、函数二、定义一个函数变量:三、函数回调的写法1-Function:四、函数回调的写法2-typedof:五、函数回调的写法3-系统默认:一、函数一般来说回调函数都是使用函数来写的,在Dart中,函数是的类型使用Function进行表示。简单示例如下(关于函数的详细解释不是本篇重点)://省略返回值test1(){ print('111111');}//携带返回值void test2(){ print('22222222');}二、定义一个函数变量:在Dart中可以将原创 2020-12-28 10:48:11 · 10704 阅读 · 2 评论 -
Flutter中使用Provider出现 Class ‘StatelessElement‘ has no instance method ‘read‘.
在项目中使用Provider时候出现了,这里不探讨原因(因为我也不知道,有知道的还请告知一下),文末有解决方式,问题代码如下:import 'package:flutter/material.dart';import 'package:provider/provider.dart';void main() => runApp(MyApp());class MyApp extends StatefulWidget { @override _MyAppState createState(原创 2020-12-26 14:00:20 · 1919 阅读 · 0 评论 -
Flutter中的isolate-compute(二)
在flutter中提供了Isolate的高级api,使使用更加简单,代码如下:import 'package:flutter/material.dart';import 'dart:isolate';import 'package:flutter/foundation.dart';import 'dart:io';// isolate入口函数,该函数必须是静态的或顶级函数,不能是匿名内部函数。// 创建一个新的Isolate,在其中运行任务doWorkcreateNewTask() asyn原创 2020-12-24 13:52:16 · 405 阅读 · 0 评论 -
Flutter中的isolate-spawn(一)
在Dart中一般来说是单线程模型,但是也可以开启新的线程,两个线程之间数据不共享,内存隔离,这个跟Java这些代码有些区别,对于耗时比较严重的逻辑,比如几百毫秒的逻辑,使用isolate比较适合,本文只做简单的使用演示,代码如下:import 'package:flutter/material.dart';import 'dart:isolate';import 'dart:async';var isolate;// isolate入口函数,该函数必须是静态的或顶级函数,不能是匿名内部函数。vo原创 2020-12-24 11:15:12 · 1977 阅读 · 1 评论 -
Flutter中的Provider(十)-基本Provider-Provider.value
之前使用Provider时候,都是使用create()进行创建一个新值,倘若我们想要观测一个已经存在的实例化对象时候,就不可以这样了。这时候需要使用Provider.value的方式或者其它类的.value,例如ChangeNotifierProvider.value该方法也可以将内部的某个值提供给其子类,代码主要源自以下链接:https://flutterbyexample.com/lesson/using-value-constructorsimport 'package:flutter/mat原创 2020-12-23 14:19:07 · 1084 阅读 · 0 评论 -
Flutter中的Provider(九)-基本Provider-Provider
Provider的原本作用是解耦,进行状态管理,这里使用最基础的Provider进行这个作用的演示import 'package:flutter/material.dart';import 'package:provider/provider.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget { @override Widget build(BuildContext context) {原创 2020-12-23 12:00:23 · 293 阅读 · 0 评论 -
Flutter中的Provider(八)-多个Provider-MultiProvider
在实际开发中,常常需要多个Provider一起使用,针对这种情况可以使用重复嵌套的方式,例如:Provider<Something>( create: (_) => Something(), child: Provider<SomethingElse>( create: (_) => SomethingElse(), child: Provider<AnotherThing>( create: (_) =>原创 2020-12-23 11:33:57 · 7325 阅读 · 0 评论 -
Flutter中的Provider(七)-代理-ProxyProvider
代理主要有以下几种,酌情使用,主要是参数个数不一样,如果参数不一样就选择不一样的ProxyProviderProxyProvider0 (the base class)ProxyProvider2 (pass values from 2 providers into the proxy)ProxyProvider3ProxyProvider4ProxyProvider5ProxyProvider6ProxyProviderChangeNotifierProxyProviderListen原创 2020-12-23 11:04:02 · 2814 阅读 · 0 评论 -
Flutter中的Provider(六)-异步刷新-StreamProvider
这是一个异步的Provider,效果跟StreamBuild差不多,代码源自于以下:https://flutterbyexample.com/lesson/stream-provider经过简单修改,只保留最核心的逻辑用于展示StreamProvider的用法。StreamBuild的了解可以参考以下链接:https://blog.youkuaiyun.com/Mr_Tony/article/details/111472632对于yield生成器的了解可以参考下方链接:https://jelenaaa.me原创 2020-12-23 10:27:47 · 1315 阅读 · 0 评论 -
Flutter中的Provider(五)-异步刷新-FutureProvider
这是一个异步的Provider,效果跟FutureBuild差不多,代码源自于以下:https://flutterbyexample.com/lesson/future-provider经过简单修改,只保留最核心的逻辑用于展示FutureProvider的用法。FutureProvider是一个状态管理的工具,使用FutureProvider可以做到数据的解耦,而使用FutureBuild最起码也要传递一个构造函数。简单代码如下:import 'package:flutter/material.da原创 2020-12-23 09:47:09 · 2028 阅读 · 0 评论 -
Flutter的圆形头像四种简单用法
代码如下:import 'package:flutter/material.dart';///圆角头像的演示功能///这里使用四种方式进行头像演示void main() => runApp(MyApp());class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Material App',原创 2020-12-22 18:36:24 · 2474 阅读 · 0 评论 -
Flutter中的异步组件-StreamBuild(三)
上一篇说到了一个StreamController在使用过程中没有办法监听两次,官方提供了广播的方式可以满足这个功能,但是原本的数据保存功能就没有办法再次使用了。这里提供简单的演示代码,功能还是点击按钮,进行数字改变,代码如下:import 'dart:async';import 'dart:math';import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends Sta原创 2020-12-22 10:04:28 · 256 阅读 · 0 评论