<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[H.A.N的博客]]></title><description><![CDATA[Objective-C、Swift、热更新、APICloud跨平台开发、Flutter学习实践指南、性能优化实践指南]]></description><link>https://blog.csdn.net/u010960265</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; u010960265]]></copyright><item><title><![CDATA[Flutter - TabController监听index]]></title><link>https://blog.csdn.net/u010960265/article/details/104982299</link><guid>https://blog.csdn.net/u010960265/article/details/104982299</guid><author>u010960265</author><pubDate>Fri, 20 Mar 2020 09:11:30 +0800</pubDate><description><![CDATA[简单一个小例子：
class _RankPageState extends State&lt;RankPage&gt;{
  final List&lt;Tab&gt; titleTabs = &lt;Tab&gt;[
    Tab(
      text: '全部',
    ),
    Tab(
      text: '待付款',
    ),
    Tab(
      text: ...]]></description><category></category></item><item><title><![CDATA[iOS Error Domain=NSCocoaErrorDomain Code=4099]]></title><link>https://blog.csdn.net/u010960265/article/details/102738909</link><guid>https://blog.csdn.net/u010960265/article/details/102738909</guid><author>u010960265</author><pubDate>Mon, 20 Jan 2020 09:57:01 +0800</pubDate><description><![CDATA[Xcode 控制台报错：
[Client] Sending selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDeb...]]></description><category></category></item><item><title><![CDATA[iOS Xcode 提示 “This app could not be installed at this time.”]]></title><link>https://blog.csdn.net/u010960265/article/details/102738995</link><guid>https://blog.csdn.net/u010960265/article/details/102738995</guid><author>u010960265</author><pubDate>Sun, 19 Jan 2020 11:12:01 +0800</pubDate><description><![CDATA[好好运行的项目，第一次模拟器安装没问题，第二次在安装提示错误：
This app could not be installed at this time.

首先清理模拟器
第一步：点击模拟器，选择Hardware -&gt; Erase All  Content and settings
第二步：command + shift + k  清理编译
第三步:：command + option + ...]]></description><category></category></item><item><title><![CDATA[Flutter 报错：The 'Pods-Tatget' target has transitive dependencies that include static binaries]]></title><link>https://blog.csdn.net/u010960265/article/details/103351684</link><guid>https://blog.csdn.net/u010960265/article/details/103351684</guid><author>u010960265</author><pubDate>Thu, 09 Jan 2020 08:40:56 +0800</pubDate><description><![CDATA[  最近做一个 Flutter 电商项目，编译 pod install 时报错 ：“The ‘Pods-Tatget’ target has transitive dependencies that include static binaries”。
直接上解决办法：
  出现这个问题的主要原因是开启了 use_framework! 选项，开启这个选项的时候，pods 集成的所有的库都会以 dyn...]]></description><category></category></item><item><title><![CDATA[解决 Flutter showBottomSheet 设置高度没有作用的？]]></title><link>https://blog.csdn.net/u010960265/article/details/103530820</link><guid>https://blog.csdn.net/u010960265/article/details/103530820</guid><author>u010960265</author><pubDate>Fri, 13 Dec 2019 17:27:38 +0800</pubDate><description><![CDATA[  最近在做一个电商项目，其中规格视图 Flutter 的底部弹窗，但是发现 showBottomSheet 在弹出的时候最高高度始终限制在了屏幕的二分之一的位置，再往高设置仍然还是一半高度，但是我们的弹窗设计稿是占据屏幕三分之二的位置的，显然 Flutter 的这个限制是无法满足需求的。
  有问题的截图如下：

怎么去解决这个问题？？？
  当时百度 Google了两个小时，发现了 Flutt...]]></description><category></category></item><item><title><![CDATA[Flutter 取两位小数 不要四舍五入的方法]]></title><link>https://blog.csdn.net/u010960265/article/details/103350891</link><guid>https://blog.csdn.net/u010960265/article/details/103350891</guid><author>u010960265</author><pubDate>Wed, 11 Dec 2019 10:01:48 +0800</pubDate><description><![CDATA[  如图:

  打印结果:


  我们知道 toStringAsFixed() 这个方法会在保留小数的基础上对末位进行四舍五入。所以我们需要多取 1 位再进行截取，防止第二位四舍五。
  为什么要进行 toStringAsFixed() 这个方法呢，原因是我们要求保留两位小数，假如给的数字是 100，那么就需要去补充小数点后的两位小数 0，即 100.00，所以要用到这个方法去保留。

...]]></description><category></category></item><item><title><![CDATA[Flutter Clipboard 粘贴板使用]]></title><link>https://blog.csdn.net/u010960265/article/details/103065873</link><guid>https://blog.csdn.net/u010960265/article/details/103065873</guid><author>u010960265</author><pubDate>Mon, 09 Dec 2019 09:41:24 +0800</pubDate><description><![CDATA[  在 Flutter 提供了 Clipboard 跟 ClipboardData 用来操作系统的复制粘贴。
  源码如下：
/// 设置要复制到粘贴板中的内容
@immutable
class ClipboardData {
  /// Creates data for the system clipboard.
  const ClipboardData({ this.text });

  ...]]></description><category></category></item><item><title><![CDATA[Flutter 取消按钮水波纹的方法]]></title><link>https://blog.csdn.net/u010960265/article/details/103351036</link><guid>https://blog.csdn.net/u010960265/article/details/103351036</guid><author>u010960265</author><pubDate>Fri, 06 Dec 2019 10:47:51 +0800</pubDate><description><![CDATA[  因为 InkWell 继承自 InkResponse，因此这里只以 InkResponse 来进行分析。
第一种方法：
  在 InkResponse 外围添加 Container，然后在 Container 中添加 color 属性，例子如下：
return Scaffold(
    appBar: AppBar(
      title: Text("title"),
    ),
  ...]]></description><category></category></item><item><title><![CDATA[iOS 微信支付(1.8.6) -- Universal Links 创建]]></title><link>https://blog.csdn.net/u010960265/article/details/103351118</link><guid>https://blog.csdn.net/u010960265/article/details/103351118</guid><author>u010960265</author><pubDate>Tue, 03 Dec 2019 13:51:29 +0800</pubDate><description><![CDATA[  今天项目接入微信支付，在更新微信支付sdk（1.8.6）的时候，用到一个Universal Links，之前没有接触过，于是就简单的记录一下配置过程。在 iOS9 之前，要在浏览器中唤醒 App，我们通常使用 scheme。这种方式需要提前判断系统中是否安装了能够响应此scheme 的 App，并且这种方式在微信被禁用。
目录：

一 、官方解释
二、具体操作
三、微信支付配置

  Univ...]]></description><category></category></item><item><title><![CDATA[Flutter 解决依赖版本冲突]]></title><link>https://blog.csdn.net/u010960265/article/details/103175744</link><guid>https://blog.csdn.net/u010960265/article/details/103175744</guid><author>u010960265</author><pubDate>Mon, 02 Dec 2019 16:47:42 +0800</pubDate><description><![CDATA[前言
  Google 推出 Flutter 这样一个新的高性能跨平台（Android，iOS）快速开发框架之后，被业界许多开发者所关注。我在接触了 Flutter 之后发现这个确实是一个好东西，好东西当然要和大家分享。
  今天要跟大家分享的是如何解决 Flutter 中依赖版本冲突。
为什么会存在版本依赖问题
  我们在开发 Flutter 项目中，常常会依赖第三方库。Flutter 依赖项越...]]></description><category></category></item><item><title><![CDATA[Flutter 隐藏键盘]]></title><link>https://blog.csdn.net/u010960265/article/details/103082685</link><guid>https://blog.csdn.net/u010960265/article/details/103082685</guid><author>u010960265</author><pubDate>Fri, 22 Nov 2019 08:30:28 +0800</pubDate><description><![CDATA[直接上代码 :
 TextEditingController _contentController = new TextEditingController();
  FocusNode _contentFocusNode = FocusNode();

Container(
                padding: EdgeInsets.fromLTRB(0.00, 5.00, 0.00,...]]></description><category></category></item><item><title><![CDATA[Flutter 相册选择图片和相机拍照]]></title><link>https://blog.csdn.net/u010960265/article/details/103021835</link><guid>https://blog.csdn.net/u010960265/article/details/103021835</guid><author>u010960265</author><pubDate>Thu, 21 Nov 2019 08:31:50 +0800</pubDate><description><![CDATA[Flutter 获取相册中的图片和用相机拍照
  在原生开发中，拍照及从图库选择图片是非常常见的需求，而且原生的图片选择第三方库也有很多并且很完善了。Flutter 也给我们提供了好用的图片选择插件，iOS 和 Android 都可以使用！
使用方法
  首先添加依赖：

  在 pubspec.yaml 加入 image_picker 的依赖，然后 ctrl + s 保存即可。在 Flutter...]]></description><category></category></item><item><title><![CDATA[Flutter 倒计时]]></title><link>https://blog.csdn.net/u010960265/article/details/103021809</link><guid>https://blog.csdn.net/u010960265/article/details/103021809</guid><author>u010960265</author><pubDate>Wed, 13 Nov 2019 08:28:59 +0800</pubDate><description><![CDATA[Flutter 倒计时
写一个倒计时定时器听起来真的好简单，然而在 Flutter 里面写这个东西还是挺坑的。原本以为创建一个 Timer 就一切都搞定了，但并没办法实时获取倒计时的进度。
void countdown(){
    Timer timer = new Timer(new Duration(seconds: 10), () {
        // 只在倒计时结束时回调
    }...]]></description><category></category></item><item><title><![CDATA[Flutter 获取应用缓存和清理缓存]]></title><link>https://blog.csdn.net/u010960265/article/details/103021712</link><guid>https://blog.csdn.net/u010960265/article/details/103021712</guid><author>u010960265</author><pubDate>Tue, 12 Nov 2019 08:55:22 +0800</pubDate><description><![CDATA[Flutter 获取应用缓存和清理缓存
  在 Android 和 iOS 中，都有需要获取应用缓存和清除应用缓存的功能，那么在 Flutter 里面应该怎么做呢？
  要想获取到应用缓存，我们就必须找到用来装缓存数据的文件夹，所以这里我们需要引入 path_provider , 用来获取 Android 和 iOS 的缓存文件夹，然后再根据文件循环计算出缓存文件的大小。
  首先，我们先简单介绍...]]></description><category></category></item><item><title><![CDATA[git 常用命令使用总结]]></title><link>https://blog.csdn.net/u010960265/article/details/102679908</link><guid>https://blog.csdn.net/u010960265/article/details/102679908</guid><author>u010960265</author><pubDate>Thu, 24 Oct 2019 13:45:01 +0800</pubDate><description><![CDATA[git 更新远程分支
git remote update origin -p

git 查看分支
git branch -a

git 本地创建拉去远程分支：
git checkout -b 【本地分支名】 【远程分支路径】

比如：
git checkout -b shareLogin origin/shareLogin


...]]></description><category></category></item><item><title><![CDATA[Flutter 和 iOS 中 .gitignore 文件内容]]></title><link>https://blog.csdn.net/u010960265/article/details/102700321</link><guid>https://blog.csdn.net/u010960265/article/details/102700321</guid><author>u010960265</author><pubDate>Wed, 23 Oct 2019 14:12:51 +0800</pubDate><description><![CDATA[Flutter 和 iOS 混编，其中 .gitignore 文件内容：
# Built application files
*.apk
*.ap_
*.aab

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/

# Gradle files
.gra...]]></description><category></category></item><item><title><![CDATA[Flutter 开发Packages、插件包、调用原生编写的 iOS 三方库以及传值总结]]></title><link>https://blog.csdn.net/u010960265/article/details/102676785</link><guid>https://blog.csdn.net/u010960265/article/details/102676785</guid><author>u010960265</author><pubDate>Tue, 22 Oct 2019 11:52:50 +0800</pubDate><description><![CDATA[创建 package
命令：
flutter create --template=plugin -i 【iOS语言objc/swift】-a 【Android语言kotlin/java】【项目名】

例如：
flutter create --template=plugin -i swift -a kotlin map

文件目录
这将在 map/ 文件夹下创建一个具有以下专用内容的插件工程：

l...]]></description><category></category></item><item><title><![CDATA[Flutter 中 json 字符串与 Map 相互转化]]></title><link>https://blog.csdn.net/u010960265/article/details/101520251</link><guid>https://blog.csdn.net/u010960265/article/details/101520251</guid><author>u010960265</author><pubDate>Fri, 27 Sep 2019 11:18:58 +0800</pubDate><description><![CDATA[前言
近期项目从 OC 转 Flutter 过程中，接口调用返回数据时 json 字符串转 Map。总结一下：
遇到的问题：
使用 toString() 方法能将对象转换成字符串，但是会丢失引号等信息，不再是标准 JSON，导致服务端解析不正常
json转换为字符串
import 'dart:convert' as convert;
/// json转换为字符串
void testJson2Str...]]></description><category></category></item><item><title><![CDATA[运行华为云短视频 SDK 报错解决办法]]></title><link>https://blog.csdn.net/u010960265/article/details/100513130</link><guid>https://blog.csdn.net/u010960265/article/details/100513130</guid><author>u010960265</author><pubDate>Tue, 03 Sep 2019 10:59:26 +0800</pubDate><description><![CDATA[问题一：
“directory not found for option '-L/…”

解决办法：
依次 Project -&gt; targets -&gt; Build Setting -&gt; Library Search Paths
删除里面的路径

问题二：
“directory not found for option '-F/…”

解决办法：
依次 Project -&gt; ...]]></description><category></category></item><item><title><![CDATA[APICloud 自定义弹窗实现]]></title><link>https://blog.csdn.net/u010960265/article/details/100156182</link><guid>https://blog.csdn.net/u010960265/article/details/100156182</guid><author>u010960265</author><pubDate>Fri, 30 Aug 2019 14:25:37 +0800</pubDate><description><![CDATA[  在大家的项目里应该会出现一些弹窗选择，你可能用了 confirm、prompt，也可能用了 dialogBox，使用这些模块总是不错的，但也许其样式满足不了你的需求。
在这我给大家分享一个简单的弹窗实现，主要利用 frame 实现。
  先上个效果图：
  点击遮照部位可以关闭弹窗。
  这个实现起来非常简单，总共就两个步骤：
  第一步：打开一个全屏的 frame，并设置半透明
api.op...]]></description><category></category></item></channel></rss>