<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Flutter|Android移动开发]]></title><description><![CDATA[逗比移动开发工程师一枚~]]></description><link>https://blog.youkuaiyun.com/codekxx</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; codekxx]]></copyright><item><title><![CDATA[Flutter控制TextFild输入框只能输入小数点后两位]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/108314974</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/108314974</guid><author>codekxx</author><pubDate>Mon, 31 Aug 2020 09:17:00 +0800</pubDate><description><![CDATA[1.工具类
class PrecisionLimitFormatter extends TextInputFormatter {
  int _scale;

  PrecisionLimitFormatter(this._scale);

  RegExp exp = new RegExp("[0-9.]");
  static const String POINTER = ".";
  static const String DOUBLE_ZERO = "00";

  @override
  Text]]></description><category></category></item><item><title><![CDATA[Flutter底部弹出框showModalBottomSheet不使用状态管理插件实现动态改变数据回调]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/106849354</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/106849354</guid><author>codekxx</author><pubDate>Fri, 19 Jun 2020 09:13:51 +0800</pubDate><description><![CDATA[void _showBottom(){
    showModalBottomSheet(
        context: context,
        builder: (_) {
          return StatefulBuilder(builder: (_,setBottomSheetState){//重点
            return BottomSheetFilterWidget(
              stateList1: _stateList1,
       ]]></description><category></category></item><item><title><![CDATA[Flutter调用相册闪退出现image from picker that was not requested]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/106215927</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/106215927</guid><author>codekxx</author><pubDate>Tue, 19 May 2020 15:43:42 +0800</pubDate><description><![CDATA[最近突然在调用相册的时候，在选择的时候突然闪退了，控制台出现
image from picker that was not requested

升级image_picker最新版本也没用，emmmmmmm
经过分析，后来发现在用image_picker插件的同时，又使用image_saver的插件，导致这两个插件冲突，删除image_saver这个保存图片的插件库之后，用自己写的保存图片到本地的方法之后可以正常选择图片了。
Future&lt;Uint8List&gt; capturePng() asyn]]></description><category></category></item><item><title><![CDATA[Flutter监听前后台切换事件]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/106056655</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/106056655</guid><author>codekxx</author><pubDate>Mon, 11 May 2020 16:21:16 +0800</pubDate><description><![CDATA[class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() =&gt; _HomePageState();
}

class _HomePageState extends State&lt;HomePage&gt; with WidgetsBindingObserver {
	@override
  void initState() {
    WidgetsBinding.instance.addOb]]></description><category></category></item><item><title><![CDATA[Flutter使用BoxShadow设置投影]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/105979842</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/105979842</guid><author>codekxx</author><pubDate>Thu, 07 May 2020 19:28:49 +0800</pubDate><description><![CDATA[class DefaultCardContainer extends StatelessWidget {
  final Color backgroundColor;
  final Widget child;
  final EdgeInsets padding;
  final EdgeInsets margin;
  DefaultCardContainer({
    this.backg...]]></description><category></category></item><item><title><![CDATA[Flutter底部弹出框showModalBottomSheet实现顶部圆角]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/105135581</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/105135581</guid><author>codekxx</author><pubDate>Fri, 27 Mar 2020 10:33:20 +0800</pubDate><description><![CDATA[无图无真相~



由于showModalBottomSheet默认的背景颜色为白色，这时需要将showModalBottomSheet的背景颜色设置为透明，然后将内部控件设置为圆角即可。

具体代码：


void _clickSpec(){
    _specModel.initData(model.normInfoBean.norms);
    showModalBottomSheet(
...]]></description><category></category></item><item><title><![CDATA[Flutter实现自定义相机界面]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/104631910</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/104631910</guid><author>codekxx</author><pubDate>Tue, 03 Mar 2020 14:42:20 +0800</pubDate><description><![CDATA[先看图，无图无真相~

界面很简陋，可以根据自己的需求进行修改界面
自定义相册使用到的插件
  camera: 0.5.7+4
  permission_handler: 3.2.2
  path_provider: 1.6.0

主要代码

主界面：

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState...]]></description><category></category></item><item><title><![CDATA[Flutter出现List<dynamic> is not a subtype of type List<String>解决方法]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/104557944</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/104557944</guid><author>codekxx</author><pubDate>Fri, 28 Feb 2020 15:54:43 +0800</pubDate><description><![CDATA[控制台错误如下：
type 'List&lt;dynamic&gt;' is not a subtype of type 'List&lt;String&gt;'

出现这个错误的原因是由于解析json的数据类型不一致导致
后台返回的一个json字段为：
"data": {
	"name":"张三",
	"labelList": [
	   "55555",
	   "666666",
	   "...]]></description><category></category></item><item><title><![CDATA[Flutter解决在ios中弹出键盘没有小数点]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/104188501</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/104188501</guid><author>codekxx</author><pubDate>Wed, 05 Feb 2020 21:05:36 +0800</pubDate><description><![CDATA[在Android平台中，将keyboardType设置为TextInputType.number
没有出现任何问题；
但是在ios中，弹起的键盘却没有小数点符号。在输入金额类型数据时，需要将keyboardType属性设置为TextInputType.numberWithOptions(decimal: true)。

...]]></description><category></category></item><item><title><![CDATA[Flutter dio3.x上传文件（图片）具体实现]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/103580454</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/103580454</guid><author>codekxx</author><pubDate>Tue, 17 Dec 2019 15:06:53 +0800</pubDate><description><![CDATA[上传文件具体实现如下：
void uploadPhoto(File file) async{
    String path = file.path;
    var name = path.substring(path.lastIndexOf("/") + 1, path.length);
    String imageType = name.substring(name.lastIndexO...]]></description><category></category></item><item><title><![CDATA[Flutter获取App的版本号]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/102564039</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/102564039</guid><author>codekxx</author><pubDate>Tue, 15 Oct 2019 11:42:49 +0800</pubDate><description><![CDATA[1.在pubspec.yaml中添加依赖
package_info: ^0.4.0+6

2.使用
在main.dart初始化，可以在全局使用，类似java的使用，不用在dart中很不友好的进行异步调用，使用同步方法。
my_utils.dart
  static PackageInfo packageInfo;

  //初始化
  static init() async{
    packag...]]></description><category></category></item><item><title><![CDATA[Flutter解决按钮请求防重复提交]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/102524576</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/102524576</guid><author>codekxx</author><pubDate>Sat, 12 Oct 2019 17:32:07 +0800</pubDate><description><![CDATA[InkWell(
        onTap: (){
          // 防重复提交
          if(lastPopTime == null || DateTime.now().difference(lastPopTime) &gt; Duration(seconds: 2)){
            lastPopTime = DateTime.now();
        ...]]></description><category></category></item><item><title><![CDATA[Flutter打包出现Gradle task assembleRelease failed with exit code 1]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/102518525</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/102518525</guid><author>codekxx</author><pubDate>Sat, 12 Oct 2019 13:08:33 +0800</pubDate><description><![CDATA[使用Flutter打包APK出现：Gradle task assembleRelease failed with exit code 1 这是由于添加的极光推送插件有问题，需要升级到最新的0.1.0
jpush_flutter: 0.1.0

然后就能打包成功了！！！！

...]]></description><category></category></item><item><title><![CDATA[Android间隔时间发送延迟请求，定时发送命令]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/102477454</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/102477454</guid><author>codekxx</author><pubDate>Thu, 10 Oct 2019 11:16:38 +0800</pubDate><description><![CDATA[1.首先创建一个service并开启这个服务在后台运行
2.间隔发送请求代码如下
创建变量
private Handler handler = new Handler();
private Runnable loadThread = new Runnable() {

        public void run() {
            // 你的线程所干的事情
            ...]]></description><category></category></item><item><title><![CDATA[Android原生获取Flutter使用shared_preferences保存的信息]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/102475084</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/102475084</guid><author>codekxx</author><pubDate>Thu, 10 Oct 2019 10:04:48 +0800</pubDate><description><![CDATA[1.首先我查看了shared_preferences安卓端的源代码

发现shared_preferences在Android端保存的文件名为FlutterSharedPreferences
2.然后我在Android端写代码进行查询FlutterSharedPreferences里面的数据
Flutter保存数据的代码如下：
        SharedPreferences sp = awai...]]></description><category></category></item><item><title><![CDATA[Flutter动态权限申请教程]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/102475014</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/102475014</guid><author>codekxx</author><pubDate>Thu, 10 Oct 2019 09:45:07 +0800</pubDate><description><![CDATA[1.添加外部资源包
permission_handler: 3.2.2

2.使用
Future requestPermission() async {
    // 申请权限
    Map&lt;PermissionGroup, PermissionStatus&gt; permissions =
    await PermissionHandler().requestPermissions...]]></description><category></category></item><item><title><![CDATA[Flutter解决图片File格式上传失败，通过dio上传文件(图片)]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/101770516</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/101770516</guid><author>codekxx</author><pubDate>Mon, 30 Sep 2019 14:25:27 +0800</pubDate><description><![CDATA[上传请求方法如下：
Future uploadRequest(url,{map}) async{
  try{
    Response response;
    Map&lt;String, dynamic&gt; headers = new Map();
    SharedPreferences sp = await SharedPreferences.getInstance();
   ...]]></description><category></category></item><item><title><![CDATA[Android原生程序与Flutter交互具体实现]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/101695933</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/101695933</guid><author>codekxx</author><pubDate>Sun, 29 Sep 2019 16:02:05 +0800</pubDate><description><![CDATA[最近要在Flutter项目的基础上加一个实时定位的功能（程序保活，不是用户强制关闭需要开启一个服务不断上传经纬度到服务器），所以只用Flutter实现不了这个功能，需要Android原生和Flutter交互才可以！
下面说一下Android原生和Flutter交互的步骤
1.首先创建一个flutter moudle

2.导入到Android原生项目中
在导入外部moudle的时候不能用常规方法进...]]></description><category></category></item><item><title><![CDATA[Android解决androidx.annotation.*找不到的问题]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/101695594</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/101695594</guid><author>codekxx</author><pubDate>Sun, 29 Sep 2019 15:42:28 +0800</pubDate><description><![CDATA[打开app的build.gradle
implementation 'androidx.annotation:annotation:+'

同步项目即可解决

]]></description><category></category></item><item><title><![CDATA[Flutter封装加载状态视图，加载中、加载成功、加载失败、加载无数据]]></title><link>https://blog.youkuaiyun.com/codekxx/article/details/101679865</link><guid>https://blog.youkuaiyun.com/codekxx/article/details/101679865</guid><author>codekxx</author><pubDate>Sun, 29 Sep 2019 11:39:20 +0800</pubDate><description><![CDATA[先看图，无图无真相~

具体实现如下：
创建load_state.dart
//四种视图状态
enum LoadState { State_Success, State_Error, State_Loading, State_Empty }

///根据不同状态来展示不同的视图
class LoadStateLayout extends StatefulWidget {

  final Load...]]></description><category></category></item></channel></rss>