<commit_before>---

layout: post
title:  "flutter 初尝"
date:   2019-2-14 11:01:32 +0800
categories: iOS
catalog:  true
tags:
  - iOS
---



# 效果

照着文档试了一下flutter，实现了以下功能。集成进App的方式不太优雅，需要手动修改很多配置，如果集成进来，打包脚本也需要做相应的修改。



1. 完整独立的App，hello world
2. 引入外部包，扩展功能
3. 完成了意见widget，列表展示
4. dart 网络请求，使用  import 'package:http/http.dart' as http;
5. json 解析
6. 性能问题
7. 动态下发，不支持
8. 集成进现有App，同时支持Hot Reload
9. 原生页面和现有页面交互，参数传递。方法相互调用
10. 不支持动态下发
11. 手势？还没试



# 坑

## multiple post_install
Invalid `Podfile` file: [!] Specifying multiple `post_install` hooks is unsupported
查看issue发现了原因，并且手动修改

## PhaseScriptExecution failed

目前把"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed
这句话注释掉就可以了

## flutter_assets 需要手动引入

~~~shell
# 删除本地Flutter文件夹
rm -rf -- "$SOURCE_ROOT/Flutter"
# 再生成Flutter文件夹
mkdir -p "$SOURCE_ROOT/Flutter"

# 编译生成
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build

# 将胶水文件copy到本地文件夹
cp -r -- "$FLUTTER_APPLICATION_PATH/.ios/Flutter/flutter_assets" "$SOURCE_ROOT/Flutter"
cp -r -- "$FLUTTER_APPLICATION_PATH/.ios/Flutter/App.framework" "$SOURCE_ROOT/Flutter"
~~~

<commit_msg>edit flutter<commit_after>---

layout: post
title:  "flutter 初尝"
date:   2019-2-14 11:01:32 +0800
categories: iOS
catalog:  true
tags:
  - iOS
---



# 效果

照着文档试了一下flutter，实现了以下功能。集成进App的方式不太优雅，需要手动修改很多配置，如果集成进来，打包脚本也需要做相应的修改。



1. 完整独立的App，hello world
2. 引入外部包，扩展功能
3. 完成了意见widget，列表展示
4. dart 网络请求，使用  import 'package:http/http.dart' as http;
5. json 解析
6. 性能问题
7. 动态下发，不支持
8. 集成进现有App，同时支持Hot Reload
9. 原生页面和现有页面交互，参数传递。方法相互调用
10. 不支持动态下发
11. 手势？还没试



# 坑

## multiple post_install
Invalid `Podfile` file: [!] Specifying multiple `post_install` hooks is unsupported
查看issue发现了原因，并且手动修改。

具体解决方法请参考以下链接。

[[!] Invalid `Podfile` file: [!] Specifying multiple `post_install` hooks is unsupported..](https://github.com/flutter/flutter/issues/26212)

## PhaseScriptExecution failed

目前把"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed
这句话注释掉就可以了

## flutter_assets 需要手动引入

~~~shell
# 删除本地Flutter文件夹
rm -rf -- "$SOURCE_ROOT/Flutter"
# 再生成Flutter文件夹
mkdir -p "$SOURCE_ROOT/Flutter"

# 编译生成
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build

# 将胶水文件copy到本地文件夹
cp -r -- "$FLUTTER_APPLICATION_PATH/.ios/Flutter/flutter_assets" "$SOURCE_ROOT/Flutter"
cp -r -- "$FLUTTER_APPLICATION_PATH/.ios/Flutter/App.framework" "$SOURCE_ROOT/Flutter"
~~~


{'fraction_non_alphanumeric': 0.12804366078925272, 'fraction_numerical': 0.0272879932829555, 'mean_word_length': 5.002518891687657, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2393390', 'n_tokens_mistral': 1281, 'n_tokens_neox': 1310, 'n_words': 189}