Add:创建 flutter go web 版
@ -1,86 +0,0 @@
|
||||
## 更新日志
|
||||
|
||||
|
||||
#### 2019-2-5
|
||||
- [x] 处理因为flutter版本导致的项目运行不起来
|
||||
- [x] 更新readme, 加入开发日志, 与相关说明
|
||||
- [x] 加入 首页欢迎效果图
|
||||
- [x] refactor(整理richText的说明):
|
||||
- [x] 解决一些页面的code演示打不开的问题
|
||||
- [x] add:开发规范
|
||||
- [x] add:版本更新历史链接
|
||||
- [x] Update README.md
|
||||
- [x] add:添加版本号
|
||||
- [x] feat:添加代码开发规范
|
||||
- [x] refactor(update: version & fiexed warns):
|
||||
- [x] fix(solve conflict):
|
||||
- [x] modify:toast and andrid apk label
|
||||
- [x] Add:自动 pr 工具抓取器,抓取两周前至今的,提交数据,并去重
|
||||
- [x] fix:fluttetToast backHome
|
||||
- [x] fix:modified the style of toast && remote files
|
||||
- [x] chore(删除tools/log.json):
|
||||
- [x] 重构文件结构
|
||||
- [x] 关于手册图标更换
|
||||
- [x] 增加demo: CupertinoNavigationBar CupertinoPageRoute CupertinoPageScaffold CupertinoPicker,CupertinoPopupSurface CupertinoTimerPickerDemo
|
||||
|
||||
|
||||
#### 2019-1-24
|
||||
- [x] 功能:更新小部件的图标
|
||||
- [x] 功能:添加CupertinoTimerPickerDemo
|
||||
- [x] 调试:消除警告
|
||||
- [x] 修复:关于手册图标更换
|
||||
- [x] 添加:文案描述
|
||||
- [x] 添加:CupertinoPicker,CupertinoPopupSurface
|
||||
#### 2019-1-23
|
||||
- [x] 修复: 导航栏home返回报错
|
||||
- [x] 修复:收集错误
|
||||
- [x] 添加:CupertinoNavigationBar CupertinoPageRoute CupertinoPageScaffold
|
||||
#### 2019-1-22
|
||||
- [x] 功能:在Allsimon拉请求中添加英文简介
|
||||
#### 2019-1-21
|
||||
- [x] 功能:Cupertino的子项
|
||||
#### 2019-1-20
|
||||
- [x] 功能:CupertinoSwitch演示
|
||||
- [x] 功能:为搜索列表加入图标
|
||||
- [x] 功能:CupertinoSliverRefreshControl演示
|
||||
- [x] 功能:CupertinoSliverNavigationBar演示
|
||||
#### 2019-1-18
|
||||
- [x] 更新:SharedPreferences保存数据和android设备布局溢出
|
||||
- [x] 功能:添加CupertinoScrollbar演示
|
||||
- [x] 功能:第四页暂时用欢迎页替代。后期再开发
|
||||
#### 2019-1-17
|
||||
- [x] 添加:+许可证
|
||||
#### 2019-1-16
|
||||
- [x] 转换:将README翻译为En语言环境
|
||||
- [x] 功能:CupertinoScrollbar演示
|
||||
#### 2019-1-14
|
||||
- [x] 添加:增加手册页面
|
||||
- [x] 功能:文字演示
|
||||
- [x] 重构:修改过的图标
|
||||
- [x] 重构:文档,文章,组件收藏,新增webView
|
||||
- [x] 重构:修改过的演示
|
||||
- [x] 重构:代码视图
|
||||
- [x] 更新:版本 和readme.md
|
||||
- [x] 修改:添加代码视图
|
||||
- [x] 功能:添加搜索历史记录板
|
||||
- [x] 修改:列出加标头错误
|
||||
#### 2019-1-15
|
||||
- [x] 功能:welcomepage
|
||||
#### 2019-1-13
|
||||
- [x] 添加:一些输入描述
|
||||
- [x] 功能:加入GridPaper&SliverGrid
|
||||
- [x] 重构:修改db
|
||||
- [x] 重构:删除数据库 TabBarView
|
||||
- [x] 添加:网格视图
|
||||
- [x] 修改:checkbosListTile 错误
|
||||
- [x] 修改:自动提示文案
|
||||
- [x] 功能:增加免责声明,声明组件,自动弹出,左上角入口
|
||||
- [x] 重构:整理数据库初始逻辑,判断数据库完整性,判断是否存在已知的cat,widget,collection 三张表。
|
||||
- [x] 修复:DialogDemo,无法关闭的问题
|
||||
#### 2019-1-12
|
||||
- [x] 修复:icon没有,但内容有的,组件,给补充了icon
|
||||
- [x] 修改:1.整理文件 2.修正分析
|
||||
- [x] 更新:flutter_rookie_book => flutter_go
|
||||
- [x] 更新:更新SearchInput文件名=> search_input
|
||||
- [x] 修改:文件名称的大小写规范
|
||||
- [x] 修改:修正bottomNavigationBar iconButton警告
|
BIN
FlutterGo.apk
@ -1,679 +0,0 @@
|
||||
# Flutter Go 代码开发规范 0.1.0 版
|
||||
|
||||
## 代码风格
|
||||
|
||||
### 标识符三种类型
|
||||
|
||||
#### 大驼峰
|
||||
类、枚举、typedef和类型参数
|
||||
|
||||
```
|
||||
class SliderMenu { ... }
|
||||
|
||||
class HttpRequest { ... }
|
||||
|
||||
typedef Predicate = bool Function<T>(T value);
|
||||
```
|
||||
|
||||
包括用于元数据注释的类
|
||||
|
||||
```
|
||||
class Foo {
|
||||
const Foo([arg]);
|
||||
}
|
||||
|
||||
@Foo(anArg)
|
||||
class A { ... }
|
||||
|
||||
@Foo()
|
||||
class B { ... }
|
||||
```
|
||||
|
||||
#### 使用小写加下划线来命名库和源文件
|
||||
|
||||
```
|
||||
library peg_parser.source_scanner;
|
||||
|
||||
import 'file_system.dart';
|
||||
import 'slider_menu.dart';
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
library pegparser.SourceScanner;
|
||||
|
||||
import 'file-system.dart';
|
||||
import 'SliderMenu.dart';
|
||||
```
|
||||
|
||||
|
||||
#### 使用小写加下划线来命名导入前缀
|
||||
|
||||
```
|
||||
import 'dart:math' as math;
|
||||
import 'package:angular_components/angular_components'
|
||||
as angular_components;
|
||||
import 'package:js/js.dart' as js;
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
import 'dart:math' as Math;
|
||||
import 'package:angular_components/angular_components'
|
||||
as angularComponents;
|
||||
import 'package:js/js.dart' as JS;
|
||||
```
|
||||
|
||||
#### 使用小驼峰法命名其他标识符
|
||||
|
||||
```
|
||||
var item;
|
||||
|
||||
HttpRequest httpRequest;
|
||||
|
||||
void align(bool clearItems) {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
#### 优先使用小驼峰法作为常量命名
|
||||
|
||||
```
|
||||
const pi = 3.14;
|
||||
const defaultTimeout = 1000;
|
||||
final urlScheme = RegExp('^([a-z]+):');
|
||||
|
||||
class Dice {
|
||||
static final numberGenerator = Random();
|
||||
}
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
const PI = 3.14;
|
||||
const DefaultTimeout = 1000;
|
||||
final URL_SCHEME = RegExp('^([a-z]+):');
|
||||
|
||||
class Dice {
|
||||
static final NUMBER_GENERATOR = Random();
|
||||
}
|
||||
```
|
||||
|
||||
#### 不使用前缀字母
|
||||
因为Dart可以告诉您声明的类型、范围、可变性和其他属性,所以没有理由将这些属性编码为标识符名称。
|
||||
|
||||
```
|
||||
defaultTimeout
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
kDefaultTimeout
|
||||
```
|
||||
|
||||
### 排序
|
||||
|
||||
为了使你的文件前言保持整洁,我们有规定的命令,指示应该出现在其中。每个“部分”应该用空行分隔。
|
||||
|
||||
#### 在其他引入之前引入所需的dart库
|
||||
|
||||
```
|
||||
import 'dart:async';
|
||||
import 'dart:html';
|
||||
|
||||
import 'package:bar/bar.dart';
|
||||
import 'package:foo/foo.dart';
|
||||
```
|
||||
|
||||
#### 在相对引入之前先引入在包中的库
|
||||
|
||||
```
|
||||
import 'package:bar/bar.dart';
|
||||
import 'package:foo/foo.dart';
|
||||
|
||||
import 'util.dart';
|
||||
```
|
||||
|
||||
#### 第三方包的导入先于其他包
|
||||
|
||||
```
|
||||
import 'package:bar/bar.dart';
|
||||
import 'package:foo/foo.dart';
|
||||
|
||||
import 'package:my_package/util.dart';
|
||||
```
|
||||
|
||||
#### 在所有导入之后,在单独的部分中指定导出
|
||||
|
||||
```
|
||||
import 'src/error.dart';
|
||||
import 'src/foo_bar.dart';
|
||||
|
||||
export 'src/error.dart';
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
import 'src/error.dart';
|
||||
export 'src/error.dart';
|
||||
import 'src/foo_bar.dart';
|
||||
```
|
||||
|
||||
|
||||
### 所有流控制结构,请使用大括号
|
||||
|
||||
这样做可以避免悬浮的else问题
|
||||
|
||||
```
|
||||
if (isWeekDay) {
|
||||
print('Bike to work!');
|
||||
} else {
|
||||
print('Go dancing or read a book!');
|
||||
}
|
||||
```
|
||||
|
||||
#### 例外
|
||||
一个if语句没有else子句,其中整个if语句和then主体都适合一行。在这种情况下,如果你喜欢的话,你可以去掉大括号
|
||||
|
||||
```
|
||||
if (arg == null) return defaultValue;
|
||||
```
|
||||
|
||||
如果流程体超出了一行需要分划请使用大括号:
|
||||
|
||||
```
|
||||
if (overflowChars != other.overflowChars) {
|
||||
return overflowChars < other.overflowChars;
|
||||
}
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
if (overflowChars != other.overflowChars)
|
||||
return overflowChars < other.overflowChars;
|
||||
```
|
||||
|
||||
## 注释
|
||||
|
||||
### 要像句子一样格式化
|
||||
除非是区分大小写的标识符,否则第一个单词要大写。以句号结尾(或“!”或“?”)。对于所有的注释都是如此:doc注释、内联内容,甚至TODOs。即使是一个句子片段。
|
||||
|
||||
```
|
||||
greet(name) {
|
||||
// Assume we have a valid name.
|
||||
print('Hi, $name!');
|
||||
}
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
greet(name) {
|
||||
/* Assume we have a valid name. */
|
||||
print('Hi, $name!');
|
||||
}
|
||||
```
|
||||
|
||||
可以使用块注释(/…/)临时注释掉一段代码,但是所有其他注释都应该使用//
|
||||
|
||||
### Doc注释
|
||||
使用///文档注释来记录成员和类型。
|
||||
|
||||
使用doc注释而不是常规注释,可以让dartdoc找到并生成文档。
|
||||
|
||||
```
|
||||
/// The number of characters in this chunk when unsplit.
|
||||
int get length => ...
|
||||
```
|
||||
|
||||
> 由于历史原因,达特茅斯学院支持道格评论的两种语法:///(“C#风格”)和/**…* /(“JavaDoc风格”)。我们更喜欢/// 因为它更紧凑。/**和*/在多行文档注释中添加两个无内容的行。在某些情况下,///语法也更容易阅读,例如文档注释包含使用*标记列表项的项目符号列表。
|
||||
|
||||
### 考虑为私有api编写文档注释
|
||||
|
||||
Doc注释并不仅仅针对库的公共API的外部使用者。它们还有助于理解从库的其他部分调用的私有成员
|
||||
|
||||
#### 用一句话总结开始doc注释
|
||||
|
||||
以简短的、以用户为中心的描述开始你的文档注释,以句号结尾。
|
||||
|
||||
```
|
||||
/// Deletes the file at [path] from the file system.
|
||||
void delete(String path) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
/// Depending on the state of the file system and the user's permissions,
|
||||
/// certain operations may or may not be possible. If there is no file at
|
||||
/// [path] or it can't be accessed, this function throws either [IOError]
|
||||
/// or [PermissionError], respectively. Otherwise, this deletes the file.
|
||||
void delete(String path) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
#### “doc注释”的第一句话分隔成自己的段落
|
||||
|
||||
在第一个句子之后添加一个空行,把它分成自己的段落
|
||||
|
||||
```
|
||||
/// Deletes the file at [path].
|
||||
///
|
||||
/// Throws an [IOError] if the file could not be found. Throws a
|
||||
/// [PermissionError] if the file is present but could not be deleted.
|
||||
void delete(String path) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
## Flutter_Go 使用参考
|
||||
|
||||
### 库的引用
|
||||
|
||||
flutter go 中,导入lib下文件库,统一指定包名,避免过多的```../../```
|
||||
```
|
||||
package:flutter_go/
|
||||
```
|
||||
|
||||
### 字符串的使用
|
||||
|
||||
#### 使用相邻字符串连接字符串文字
|
||||
如果有两个字符串字面值(不是值,而是实际引用的字面值),则不需要使用+连接它们。就像在C和c++中,简单地把它们放在一起就能做到。这是创建一个长字符串很好的方法但是不适用于单独一行。
|
||||
|
||||
```
|
||||
raiseAlarm(
|
||||
'ERROR: Parts of the spaceship are on fire. Other '
|
||||
'parts are overrun by martians. Unclear which are which.');
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
raiseAlarm('ERROR: Parts of the spaceship are on fire. Other ' +
|
||||
'parts are overrun by martians. Unclear which are which.');
|
||||
```
|
||||
|
||||
#### 优先使用模板字符串
|
||||
```
|
||||
'Hello, $name! You are ${year - birth} years old.';
|
||||
```
|
||||
|
||||
#### 在不需要的时候,避免使用花括号
|
||||
|
||||
```
|
||||
'Hi, $name!'
|
||||
"Wear your wildest $decade's outfit."
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
'Hello, ' + name + '! You are ' + (year - birth).toString() + ' y...';
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
'Hi, ${name}!'
|
||||
"Wear your wildest ${decade}'s outfit."
|
||||
```
|
||||
|
||||
### 集合
|
||||
|
||||
#### 尽可能使用集合字面量
|
||||
|
||||
如果要创建一个不可增长的列表,或者其他一些自定义集合类型,那么无论如何,都要使用构造函数。
|
||||
|
||||
```
|
||||
var points = [];
|
||||
var addresses = {};
|
||||
var lines = <Lines>[];
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
var points = List();
|
||||
var addresses = Map();
|
||||
```
|
||||
|
||||
#### 不要使用.length查看集合是否为空
|
||||
|
||||
```
|
||||
if (lunchBox.isEmpty) return 'so hungry...';
|
||||
if (words.isNotEmpty) return words.join(' ');
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
if (lunchBox.length == 0) return 'so hungry...';
|
||||
if (!words.isEmpty) return words.join(' ');
|
||||
```
|
||||
|
||||
#### 考虑使用高阶方法转换序列
|
||||
|
||||
如果有一个集合,并且希望从中生成一个新的修改后的集合,那么使用.map()、.where()和Iterable上的其他方便的方法通常更短,也更具有声明性
|
||||
|
||||
```
|
||||
var aquaticNames = animals
|
||||
.where((animal) => animal.isAquatic)
|
||||
.map((animal) => animal.name);
|
||||
```
|
||||
#### 避免使用带有函数字面量的Iterable.forEach()
|
||||
|
||||
在Dart中,如果你想遍历一个序列,惯用的方法是使用循环。
|
||||
|
||||
```
|
||||
for (var person in people) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
people.forEach((person) {
|
||||
...
|
||||
});
|
||||
```
|
||||
|
||||
#### 不要使用List.from(),除非打算更改结果的类型
|
||||
|
||||
给定一个迭代,有两种明显的方法可以生成包含相同元素的新列表
|
||||
|
||||
```
|
||||
var copy1 = iterable.toList();
|
||||
var copy2 = List.from(iterable);
|
||||
```
|
||||
|
||||
明显的区别是第一个比较短。重要的区别是第一个保留了原始对象的类型参数
|
||||
|
||||
```
|
||||
// Creates a List<int>:
|
||||
var iterable = [1, 2, 3];
|
||||
|
||||
// Prints "List<int>":
|
||||
print(iterable.toList().runtimeType);
|
||||
```
|
||||
|
||||
```
|
||||
// Creates a List<int>:
|
||||
var iterable = [1, 2, 3];
|
||||
|
||||
// Prints "List<dynamic>":
|
||||
print(List.from(iterable).runtimeType);
|
||||
```
|
||||
|
||||
### 参数的使用
|
||||
|
||||
#### 使用=将命名参数与其默认值分割开
|
||||
|
||||
由于遗留原因,Dart均允许“:”和“=”作为指定参数的默认值分隔符。为了与可选的位置参数保持一致,使用“=”。
|
||||
|
||||
```
|
||||
void insert(Object item, {int at = 0}) { ... }
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
void insert(Object item, {int at: 0}) { ... }
|
||||
```
|
||||
|
||||
#### 不要使用显式默认值null
|
||||
|
||||
如果参数是可选的,但没有给它一个默认值,则语言隐式地使用null作为默认值,因此不需要编写它
|
||||
|
||||
```
|
||||
void error([String message]) {
|
||||
stderr.write(message ?? '\n');
|
||||
}
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
void error([String message = null]) {
|
||||
stderr.write(message ?? '\n');
|
||||
}
|
||||
```
|
||||
|
||||
### 变量
|
||||
|
||||
#### 不要显式地将变量初始化为空
|
||||
在Dart中,未显式初始化的变量或字段自动被初始化为null。不要多余赋值null
|
||||
|
||||
```
|
||||
int _nextId;
|
||||
|
||||
class LazyId {
|
||||
int _id;
|
||||
|
||||
int get id {
|
||||
if (_nextId == null) _nextId = 0;
|
||||
if (_id == null) _id = _nextId++;
|
||||
|
||||
return _id;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
int _nextId = null;
|
||||
|
||||
class LazyId {
|
||||
int _id = null;
|
||||
|
||||
int get id {
|
||||
if (_nextId == null) _nextId = 0;
|
||||
if (_id == null) _id = _nextId++;
|
||||
|
||||
return _id;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 避免储存你能计算的东西
|
||||
|
||||
在设计类时,您通常希望将多个视图公开到相同的底层状态。通常你会看到在构造函数中计算所有视图的代码,然后存储它们:
|
||||
|
||||
应该避免的写法:
|
||||
|
||||
```
|
||||
class Circle {
|
||||
num radius;
|
||||
num area;
|
||||
num circumference;
|
||||
|
||||
Circle(num radius)
|
||||
: radius = radius,
|
||||
area = pi * radius * radius,
|
||||
circumference = pi * 2.0 * radius;
|
||||
}
|
||||
```
|
||||
|
||||
如上代码问题:
|
||||
|
||||
- 浪费内存
|
||||
- 缓存的问题是无效——如何知道何时缓存过期需要重新计算?
|
||||
|
||||
推荐的写法如下:
|
||||
|
||||
```
|
||||
class Circle {
|
||||
num radius;
|
||||
|
||||
Circle(this.radius);
|
||||
|
||||
num get area => pi * radius * radius;
|
||||
num get circumference => pi * 2.0 * radius;
|
||||
}
|
||||
```
|
||||
|
||||
### 类成员
|
||||
|
||||
#### 不要把不必要地将字段包装在getter和setter中
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
class Box {
|
||||
var _contents;
|
||||
get contents => _contents;
|
||||
set contents(value) {
|
||||
_contents = value;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 优先使用final字段来创建只读属性
|
||||
|
||||
尤其对于 ```StatelessWidget```
|
||||
|
||||
#### 在不需要的时候不要用this
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
class Box {
|
||||
var value;
|
||||
|
||||
void clear() {
|
||||
this.update(null);
|
||||
}
|
||||
|
||||
void update(value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
推荐如下写法:
|
||||
|
||||
```
|
||||
class Box {
|
||||
var value;
|
||||
|
||||
void clear() {
|
||||
update(null);
|
||||
}
|
||||
|
||||
void update(value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### 尽可能使用初始化的形式
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
class Point {
|
||||
num x, y;
|
||||
Point(num x, num y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
推荐如下写法:
|
||||
|
||||
```
|
||||
class Point {
|
||||
num x, y;
|
||||
Point(this.x, this.y);
|
||||
}
|
||||
```
|
||||
|
||||
#### 不要使用new
|
||||
|
||||
Dart2使new 关键字可选
|
||||
|
||||
推荐写法:
|
||||
|
||||
```
|
||||
Widget build(BuildContext context) {
|
||||
return Row(
|
||||
children: [
|
||||
RaisedButton(
|
||||
child: Text('Increment'),
|
||||
),
|
||||
Text('Click!'),
|
||||
],
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
不推荐如下写法:
|
||||
|
||||
```
|
||||
Widget build(BuildContext context) {
|
||||
return new Row(
|
||||
children: [
|
||||
new RaisedButton(
|
||||
child: new Text('Increment'),
|
||||
),
|
||||
new Text('Click!'),
|
||||
],
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
### 异步
|
||||
|
||||
#### 优先使用async/await代替原始的futures
|
||||
|
||||
async/await语法提高了可读性,允许你在异步代码中使用所有Dart控制流结构。
|
||||
|
||||
```
|
||||
Future<int> countActivePlayers(String teamName) async {
|
||||
try {
|
||||
var team = await downloadTeam(teamName);
|
||||
if (team == null) return 0;
|
||||
|
||||
var players = await team.roster;
|
||||
return players.where((player) => player.isActive).length;
|
||||
} catch (e) {
|
||||
log.error(e);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 当异步没有任何用处时,不要使用它
|
||||
|
||||
如果可以在不改变函数行为的情况下省略异步,那么就这样做。、
|
||||
|
||||
```
|
||||
Future afterTwoThings(Future first, Future second) {
|
||||
return Future.wait([first, second]);
|
||||
}
|
||||
```
|
||||
|
||||
不推荐写法:
|
||||
|
||||
```
|
||||
Future afterTwoThings(Future first, Future second) async {
|
||||
return Future.wait([first, second]);
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
28
LICENSE
@ -1,28 +0,0 @@
|
||||
BSD License
|
||||
|
||||
Copyright (c) 2018-present, Alibaba Group Holding Limited. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the copyright holder nor the names of its contributors may be used to
|
||||
endorse or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
88
README-en.md
@ -1,88 +0,0 @@
|
||||
## Flutter Go
|
||||
|
||||

|
||||
|
||||
> Help developers get started quickly Flutter **Flutter Go 1.0 Android has been released**
|
||||
|
||||
|
||||
## Download URL
|
||||
|
||||
Android download URL:
|
||||
|
||||
<img src="https://img.alicdn.com/tfs/TB1jGgfQ7voK1RjSZFNXXcxMVXa-438-426.png" width="200px">
|
||||
|
||||
Iphone download URL:
|
||||
No
|
||||
|
||||
## Development Environment
|
||||
This Project need latest package, please update regularly.
|
||||
|
||||
- dart(version: 2.0.0)
|
||||
- flutter(version: v1.0.0)
|
||||
|
||||
### Background
|
||||
|
||||
#### What is Flutter?
|
||||
|
||||
On June 21, 2018, Google released the first release preview of Flutter as a new responsive, cross-platform, high-performance mobile development framework launched by Google. Flutter is a cross-platform mobile UI framework designed to help developers develop high-performance, high-fidelity Android and iOS apps using a single set of code.
|
||||
|
||||
The advantages of Flutter mainly include:
|
||||
- Cross-platform
|
||||
- Open source
|
||||
- Hot Reload, responsive framework, and its rich controls and development tools
|
||||
- Flexible interface design and control combinations
|
||||
- High quality user experience with a portable GPU-accelerated rendering engine and high-performance ARM code runtime
|
||||
|
||||
#### The origin of Flutter Go
|
||||
|
||||
- Flutter has too little learning material, which is relatively difficult for students who are not good at English.
|
||||
- The official website document example is not sound enough, not intuitive enough
|
||||
- The usage of each widget is different, and the properties are numerous. To run a demo of a widget, it is often necessary to look through various materials everywhere.
|
||||
|
||||
#### Advantages of Flutter Go
|
||||
|
||||
- Detailed idiom widgets up to **130+**
|
||||
- Companion Demo Explain the widget's general usage
|
||||
- Centralized integration of widget cases, an APP to get all the usage of common widgets
|
||||
- Continuous iteration ‘chasing new’ official version
|
||||
|
||||
### App Preview
|
||||
|
||||
<img src="https://img.alicdn.com/tfs/TB1oeicBhjaK1RjSZFAXXbdLFXa-345-717.gif" width=200> <img src="https://img.alicdn.com/tfs/TB1WJNuBmzqK1RjSZPcXXbTepXa-345-717.gif" width=200> <img src="https://img.alicdn.com/tfs/TB13Xh3BkvoK1RjSZFNXXcxMVXa-345-717.gif" width=200> <img src="https://img.alicdn.com/tfs/TB1MtdSBjDpK1RjSZFrXXa78VXa-345-717.gif" width=200>
|
||||
|
||||
|
||||
### Core Team
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/minghe.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/minghe">@minghe</a>
|
||||
</td>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/ryan730.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/ryan730">@ryan730</a>
|
||||
</td>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/Nealyang.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/Nealyang">@Nealyang</a>
|
||||
</td>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/hanxu317317.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/hanxu317317">@hanxu317317</a>
|
||||
</td>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/DeckeDeng.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/DeckeDeng">@DeckeDeng</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
Powered by [Alibaba Auction Front-end Team](https://github.com/alibaba-paimai-frontend)<img src="https://img.alicdn.com/tfs/TB1foEhAMHqK1RjSZJnXXbNLpXa-166-166.png" width= 20 height=20>
|
128
README.md
@ -1,128 +0,0 @@
|
||||
Language: [English](https://github.com/alibaba/flutter-go/blob/master/README-en.md) | [中文简体](https://github.com/alibaba/flutter-go/blob/master/README.md)
|
||||
## Flutter Go
|
||||
|
||||

|
||||
|
||||
> 帮助开发者快速上手 Flutter **Flutter Go 1.0 Android版已正式发布**
|
||||
|
||||
## 版本更新历史
|
||||
> 按时间顺序,展示重要的提交更新内容。
|
||||
|
||||
[地址](https://github.com/alibaba/flutter-go/blob/develop/CHANGE-LOG.md)
|
||||
|
||||
## 开发规范
|
||||
> 由于类似 javascript, java, object-c,等开发者的语言习惯不同而产生歧义,我们依据官方提供的 [dart 语言规范](https://www.dartlang.org) 定制。
|
||||
|
||||
[<< Flutter Go 开发规范第一版 >>](https://github.com/alibaba/flutter-go/blob/develop/Flutter_Go%20%E4%BB%A3%E7%A0%81%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83.md)
|
||||
|
||||
## The Flutter-Go Roadmap(路线图) for 2019
|
||||
> 考虑到 Flutter 未来的变化和策略的可变性, roadmap 不排除有一定调整,但总体不会变化太大。
|
||||
|
||||
<img src="https://img.alicdn.com/tfs/TB19UahQQzoK1RjSZFlXXai4VXa-1500-1106.png" width="600px">
|
||||
|
||||
|
||||
|
||||
## Release安装包下载地址
|
||||
|
||||
android下载地址:
|
||||
|
||||
<img src="https://img.alicdn.com/tfs/TB1ylxGTMHqK1RjSZFgXXa7JXXa-436-432.png" width="200px">
|
||||
|
||||
iphone下载地址: AppStore上面进行搜索fluttego
|
||||
|
||||
<img src="https://img.alicdn.com/tfs/TB1trMgV7PoK1RjSZKbXXX1IXXa-620-1343.png" width=200> <img src="https://img.alicdn.com/tfs/TB1w_MbV7voK1RjSZFDXXXY3pXa-620-1343.png" width=200>
|
||||
|
||||
|
||||
## 基础环境
|
||||
本项目环境持续更新. 请定期更新各依赖包.
|
||||
|
||||
- dart(version: 2.0.0)
|
||||
- flutter(version: v1.0.0)
|
||||
|
||||
|
||||
### 背景
|
||||
|
||||
#### Flutter 是什么?
|
||||
|
||||
2018年6月21日Google发布Flutter首个release预览版,作为Google 大力推出的一种全新的响应式,跨平台,高性能的移动开发框架。Flutter是一个跨平台的移动UI框架,旨在帮助开发者使用一套代码开发高性能、高保真的Android和iOS应用。
|
||||
|
||||
flutter优点主要包括:
|
||||
- 跨平台
|
||||
- 开源
|
||||
- Hot Reload、响应式框架、及其丰富的控件以及开发工具
|
||||
- 灵活的界面设计以及控件组合
|
||||
- 借助可以移植的GPU加速的渲染引擎以及高性能ARM代码运行时已达到高质量的用户体验
|
||||
|
||||
#### Flutter Go 的由来
|
||||
|
||||
- Flutter学习资料太少,对于英文不好的同学相对来说比较困难
|
||||
- 官网文档示例不够健全,不够直观
|
||||
- 各个 widget 的用法各异,属性纷繁,要运行一个 widget 的 demo 往往要到处翻阅各种资料
|
||||
|
||||
#### Flutter Go 的优势
|
||||
|
||||
- 详解常用 widget 多达 **140+** 个
|
||||
- 配套 Demo 详解 widget 常规用法
|
||||
- 集中整合 widget 案例,一个 APP 搞定所有常用 widget 的用法
|
||||
- 持续迭代 ‘追新’ 官方版本
|
||||
|
||||
### app 预览
|
||||
|
||||
|
||||
<img src="https://img.alicdn.com/tfs/TB1MoiNExTpK1RjSZFGXXcHqFXa-362-751.gif" width=200> <img src="https://img.alicdn.com/tfs/TB1oeicBhjaK1RjSZFAXXbdLFXa-345-717.gif" width=200> <img src="https://img.alicdn.com/tfs/TB1WJNuBmzqK1RjSZPcXXbTepXa-345-717.gif" width=200> <img src="https://img.alicdn.com/tfs/TB13Xh3BkvoK1RjSZFNXXcxMVXa-345-717.gif" width=200>
|
||||
|
||||
### Core Team
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/minghe.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/minghe">@minghe</a>
|
||||
</td>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/ryan730.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/ryan730">@ryan730</a>
|
||||
</td>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/Nealyang.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/Nealyang">@Nealyang</a>
|
||||
</td>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/hanxu317317.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/hanxu317317">@hanxu317317</a>
|
||||
</td>
|
||||
<td align="center" width="80" valign="top">
|
||||
<img height="80" width="80" src="https://github.com/DeckeDeng.png?s=128">
|
||||
<br>
|
||||
<a href="https://github.com/DeckeDeng">@DeckeDeng</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
### 版权说明
|
||||
- 感谢大家对 `flutter go` 的支持和下载,但近期发现,有类似直接被发布到苹果 app store 上的行为,并未注明真实来源,copyright 和 项目的 github 地址,以及开发者的版权相关信息( 包括删除"首页栏的版权声明"和"关于我们"的行为 );
|
||||
|
||||
- 上述行为,打击了 `flutter go` 开发者的积极性,同时干扰了 flutter go app 的正常发布渠道,基于 app 开源项目的发布特殊性,特更新 [LICENSE](LICENSE) 「 开源许可证 」,由 MIT 协议 更改为 BSD 协议, 同时建议不要随意发布到公共渠道的应用商店,影响官方 `flutter go` 的app版本迭代;
|
||||
|
||||
- 大家可以继续放心的开源使用,但是要求注意和遵守以下许可前提:
|
||||
```
|
||||
* 版权声明样式
|
||||
//Copyright (c) 2018-present, Alibaba Group Holding Limited. All rights reserved.
|
||||
|
||||
* 源代码的重新分发必须保留上述版权声明,条件清单和免责声明。
|
||||
|
||||
* 二进制形式的再分发必须复制上述版权声明,此条件列表以及文档中的以下免责声明和/或随分发提供的其他材料。
|
||||
```
|
||||
- 由于本开源项目是供大家学习和交流 flutter 之用,里面耗费了开发人员大量的心血,精力和热情,请尊重开发者的劳动成果,以及相关许可证之规定;
|
||||
|
||||
- 大家的互相信任,尊重与支持,才是开源社区前进的动力和来源.
|
||||
|
||||
Powered by [阿里拍卖前端团队](https://github.com/alibaba-paimai-frontend)<img src="https://img.alicdn.com/tfs/TB1foEhAMHqK1RjSZJnXXbNLpXa-166-166.png" width=20 height=20>
|
||||
|
||||
+++++++
|
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>android</name>
|
||||
<comment>Project android created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
@ -1,2 +0,0 @@
|
||||
connection.project.dir=
|
||||
eclipse.preferences.version=1
|
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
|
||||
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
|
||||
<classpathentry kind="output" path="bin/default"/>
|
||||
</classpath>
|
@ -1,23 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>app</name>
|
||||
<comment>Project app created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
@ -1,2 +0,0 @@
|
||||
connection.project.dir=..
|
||||
eclipse.preferences.version=1
|
@ -1,95 +0,0 @@
|
||||
def localProperties = new Properties()
|
||||
def localPropertiesFile = rootProject.file('local.properties')
|
||||
if (localPropertiesFile.exists()) {
|
||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
||||
localProperties.load(reader)
|
||||
}
|
||||
}
|
||||
|
||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||
if (flutterRoot == null) {
|
||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||
}
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = '1'
|
||||
}
|
||||
|
||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
||||
if (flutterVersionName == null) {
|
||||
flutterVersionName = '1.0'
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
def keystoreProperties = new Properties()
|
||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||
}
|
||||
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
disable 'InvalidPackage'
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId "com.alibaba.fluttergo"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 28
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
keyAlias keystoreProperties['keyAlias']
|
||||
keyPassword keystoreProperties['keyPassword']
|
||||
storeFile file(keystoreProperties['storeFile'])
|
||||
storePassword keystoreProperties['storePassword']
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
flutter {
|
||||
source '../..'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'androidx.test:runner:1.1.1'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
|
||||
//firebase
|
||||
implementation 'com.google.firebase:firebase-core:16.0.8'
|
||||
//Crashlytics SDK
|
||||
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
|
||||
// 性能监控
|
||||
///implementation 'com.google.firebase:firebase-perf:16.2.3'
|
||||
// 登陆
|
||||
////implementation 'com.google.firebase:firebase-auth:16.0.3'
|
||||
}
|
||||
//firebase
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
//Crashlytics SDK
|
||||
apply plugin: 'io.fabric'
|
||||
// 性能监控
|
||||
///apply plugin: 'com.google.firebase.firebase-perf'
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "611157827052",
|
||||
"firebase_url": "https://alibaba-flutter-go.firebaseio.com",
|
||||
"project_id": "alibaba-flutter-go",
|
||||
"storage_bucket": "alibaba-flutter-go.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:611157827052:android:c6129e5eff2f125d",
|
||||
"android_client_info": {
|
||||
"package_name": "com.alibaba.fluttergo"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "611157827052-iiuevj8qu56alpqh47v37j9sd4e40di7.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyA9chxDIuds7gmPQTJPpDpoXyN9rDTdvhU"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "611157827052-iiuevj8qu56alpqh47v37j9sd4e40di7.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
@ -1 +0,0 @@
|
||||
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"0.0.5","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
@ -1,7 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.alibaba.fluttergo">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
@ -1,38 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.alibaba.fluttergo">
|
||||
|
||||
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
|
||||
calls FlutterMain.startInitialization(this); in its onCreate method.
|
||||
In most cases you can leave this as-is, but you if you want to provide
|
||||
additional functionality it is fine to subclass or reimplement
|
||||
FlutterApplication and put your custom class here. -->
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.MODE_WORLD_READABLE"/>
|
||||
<uses-permission android:name="android.permission.MODE_WORLD_WRITEABLE"/>
|
||||
|
||||
<application
|
||||
android:name="io.flutter.app.FlutterApplication"
|
||||
android:label="fluttergo"
|
||||
android:icon="@mipmap/ic_launcher_logo">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:hardwareAccelerated="true"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<!-- This keeps the window background of the activity showing
|
||||
until Flutter renders its first frame. It can be removed if
|
||||
there is no splash screen (such as the default splash screen
|
||||
defined in @style/LaunchTheme). -->
|
||||
<meta-data
|
||||
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
|
||||
android:value="true" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
@ -1,13 +0,0 @@
|
||||
package com.alibaba.fluttergo
|
||||
|
||||
import android.os.Bundle
|
||||
|
||||
import io.flutter.app.FlutterActivity
|
||||
import io.flutter.plugins.GeneratedPluginRegistrant
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
GeneratedPluginRegistrant.registerWith(this)
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 2.7 KiB |
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<item>
|
||||
<bitmap
|
||||
android:src="@drawable/splash" />
|
||||
</item>
|
||||
</layer-list>
|
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 197 KiB |
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical" android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/splash">
|
||||
|
||||
|
||||
</LinearLayout>
|
Before Width: | Height: | Size: 544 B |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 442 B |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 721 B |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 1.0 MiB |
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
Flutter draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
</style>
|
||||
</resources>
|
@ -1,7 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.alibaba.fluttergo">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
@ -1,45 +0,0 @@
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.3.0'
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
//Crashlytics SDK
|
||||
maven {
|
||||
url 'https://maven.fabric.io/public'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.3.0'
|
||||
//firebase
|
||||
classpath 'com.google.gms:google-services:4.2.0'
|
||||
//Crashlytics SDK
|
||||
classpath 'io.fabric.tools:gradle:1.26.1'
|
||||
// 性能监控
|
||||
///classpath 'com.google.firebase:firebase-plugins:1.1.5'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
//Crashlytics SDK
|
||||
maven {
|
||||
url 'https://maven.google.com/'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.buildDir = '../build'
|
||||
subprojects {
|
||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||
}
|
||||
subprojects {
|
||||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
org.gradle.jvmargs=-Xmx1536M
|
||||
android.enableJetifier=true
|
||||
android.useAndroidX=true
|
@ -1,6 +0,0 @@
|
||||
#Thu Jan 10 15:37:36 CST 2019
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
|
@ -1,4 +0,0 @@
|
||||
storePassword=fluttergo123
|
||||
keyPassword=fluttergo123
|
||||
keyAlias=key
|
||||
storeFile=/Users/xj.deng/key.jks
|
@ -1,15 +0,0 @@
|
||||
include ':app'
|
||||
|
||||
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
|
||||
|
||||
def plugins = new Properties()
|
||||
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
|
||||
if (pluginsFile.exists()) {
|
||||
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
|
||||
}
|
||||
|
||||
plugins.each { name, path ->
|
||||
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
|
||||
include ":$name"
|
||||
project(":$name").projectDir = pluginDirectory
|
||||
}
|
BIN
assets/app.db
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 555 B |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 978 B |
Before Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 853 KiB |
Before Width: | Height: | Size: 871 KiB |
Before Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 185 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 118 KiB |
160
develop.md
@ -1,160 +0,0 @@
|
||||
# flutter-common-widgets-app
|
||||
|
||||
### 使用背景
|
||||
* 鉴于目前flutter官方庞大的小部件(widget)系统以及api文档,只有文字描述,而没有可视化实例。
|
||||
* 我们开发这套app,可以系统的看到常用小部件(widget)的用法。
|
||||
* 辅助初学者更快上手,flutter官方小部件(widget)
|
||||
|
||||
|
||||
|
||||
### 参考资料
|
||||
|
||||
* [flutter-widgets的官方库地址]( https://docs.flutter.kim/widgets/widgets-library.html )
|
||||
* [flutter-widgets的官方目录集]( http://doc.flutter-dev.cn/widgets/ )
|
||||
* [sqlitestudio 本地可视化工具] (https://sqlitestudio.pl/index.rvt)
|
||||
|
||||
### 分支命名及使用规范
|
||||
|
||||
* 分支命名规范
|
||||
- 自己开发分支命名统一为 username ,如:yifeng
|
||||
- 分支两条主线为 Master分支和develop分支
|
||||
- Master作为发布分支,develop作为开发测试分支、自己开发分支从dev checkout出去,发布即 merge to master
|
||||
|
||||
* 分支合并规范
|
||||
- 从最新的develop分支checkout出自己的开发分支
|
||||
- 在自己开发开发分支开发完成后,先去develop分支pull最新代码,
|
||||
- 将develop 分支最新代码 merge 到自己分支,确保无冲突
|
||||
- 再切回develop分支merge自己开发分支代码,确保无冲突,且能正常运行
|
||||
|
||||
### commit 提交规范
|
||||
* $git cz
|
||||
|
||||
* 用于说明 commit 的类别,只允许使用下面7个标识。
|
||||
|
||||
- feat:新功能(feature)
|
||||
|
||||
- fix:修补bug
|
||||
|
||||
- docs:文档(documentation)
|
||||
|
||||
- style: 格式(不影响代码运行的变动)
|
||||
|
||||
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
|
||||
|
||||
- test:增加测试
|
||||
|
||||
- chore:构建过程或辅助工具的变动
|
||||
|
||||
|
||||
### 代码规范
|
||||
* 文件命名规范
|
||||
- 文件命名使用下划线命名法,如:hello_world
|
||||
- 请使用英文进行命名,不允许使用拼音。命名要求具有可读性,尽量避免使用缩写与数字
|
||||
- 未完待续
|
||||
|
||||
* 代码编码规范
|
||||
- 文件编码统一使用 UTF-8 编码;
|
||||
- 前端编码采用首字母小写驼峰法. Widget Class 必须采用首字母大写驼峰法.
|
||||
|
||||
### 文件目录结构(以LIb文件说明)
|
||||
|
||||
- lib
|
||||
- main.dart 入口文件
|
||||
- common 公共的method
|
||||
- components widget
|
||||
- generated
|
||||
- model 存放模型, 不应该加入逻辑层
|
||||
- router 路由
|
||||
- views 展示界面
|
||||
- widget (与components概念重合,废弃)
|
||||
|
||||
``` javascript
|
||||
├── main.dart //入口文件
|
||||
├── common 公共的method
|
||||
│ ├── Style.dart
|
||||
│ ├── eventBus.dart
|
||||
│ ├── provider.dart
|
||||
│ └── sql.dart
|
||||
├── components //app展示框架用到的组件
|
||||
│ ├── Input.dart
|
||||
│ ├── List.dart
|
||||
│ ├── Pagination.dart
|
||||
│ ├── Pagination2.dart
|
||||
│ ├── SearchInput.dart
|
||||
│ └── homeBanner.dart
|
||||
├── generated
|
||||
│ └── i18n.dart
|
||||
├── model //本地存放模型, 不应该加入逻辑层
|
||||
│ ├── base.dart
|
||||
│ ├── cat.dart
|
||||
│ ├── story.dart
|
||||
│ └── widget.dart
|
||||
├── routers //路由
|
||||
│ ├── application.dart
|
||||
│ ├── router_handler.dart
|
||||
│ └── routers.dart
|
||||
├── views //app展示界面
|
||||
│ ├── Detail.dart
|
||||
│ ├── FirstPage.dart
|
||||
│ ├── FourthPage.dart
|
||||
│ ├── ThirdPage.dart
|
||||
│ ├── category.dart
|
||||
│ ├── demos
|
||||
│ │ ├── home.dart
|
||||
│ │ └── layout
|
||||
│ │ ├── SamplePage.dart
|
||||
│ │ └── layout_type.dart
|
||||
│ └── widgetPage.dart
|
||||
└── widgets
|
||||
└── ... //下面详细说明
|
||||
```
|
||||
|
||||
``` javascript
|
||||
└── widgets // 对flutter所有元素和组件的分类
|
||||
├── 404.dart
|
||||
├── index.dart // widgets 的总入口文件
|
||||
├── components // 组件的分类 (区别于上面的components)
|
||||
│ └── index.dart
|
||||
├── elements // 基础元素的分类
|
||||
│ ├── index.dart // elements下的 elements 类型入口文件
|
||||
│ ├── Form // elements下的 From 类型集合
|
||||
│ │ ├── Button // button 元素,里面是 文件夹代表类名/index.dart
|
||||
│ │ │ ├── FlatButton
|
||||
│ │ │ │ └── index.dart
|
||||
│ │ │ ├── RaisedButton
|
||||
│ │ │ │ └── index.dart
|
||||
│ │ │ └── index.dart
|
||||
│ │ ├── CheckBox
|
||||
│ │ ├── Input
|
||||
│ │ ├── Radio
|
||||
│ │ ├── Slider
|
||||
│ │ ├── Switch
|
||||
│ │ ├── Text
|
||||
│ │ └── index.dart
|
||||
│ ├── Frame // elements下的 Frame 类型集合
|
||||
│ │ ├── Align
|
||||
│ │ ├── Axis
|
||||
│ │ ├── Box
|
||||
│ │ ├── Expanded
|
||||
│ │ ├── Layout
|
||||
│ │ ├── Stack
|
||||
│ │ ├── Table
|
||||
│ │ └── spacing
|
||||
│ └── Media // elements下的 Media 类型集合
|
||||
│ ├── Canvas
|
||||
│ ├── Icon
|
||||
│ └── Image
|
||||
└── themes
|
||||
└── index.dart
|
||||
```
|
||||
|
||||
```javascript
|
||||
widget 里的文件结构,用来存放封装的逻辑组件, 文件目录应为, 类比rax
|
||||
- widget // widget 下详细元素或组件的目录结构
|
||||
- hello-world // 例如
|
||||
- mods // (可选, 子模块)
|
||||
- mocks // (可选)
|
||||
- utils // (可选, 存放暂时的私有method)
|
||||
- schema
|
||||
- index.dart
|
||||
```
|
Before Width: | Height: | Size: 360 KiB |
Before Width: | Height: | Size: 673 KiB |
Before Width: | Height: | Size: 215 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 192 KiB |
BIN
docs/jiegou.png
Before Width: | Height: | Size: 106 KiB |
BIN
flutter_01.png
Before Width: | Height: | Size: 41 KiB |
45
ios/.gitignore
vendored
@ -1,45 +0,0 @@
|
||||
.idea/
|
||||
.vagrant/
|
||||
.sconsign.dblite
|
||||
.svn/
|
||||
|
||||
.DS_Store
|
||||
*.swp
|
||||
profile
|
||||
|
||||
DerivedData/
|
||||
build/
|
||||
GeneratedPluginRegistrant.h
|
||||
GeneratedPluginRegistrant.m
|
||||
|
||||
.generated/
|
||||
|
||||
*.pbxuser
|
||||
*.mode1v3
|
||||
*.mode2v3
|
||||
*.perspectivev3
|
||||
|
||||
!default.pbxuser
|
||||
!default.mode1v3
|
||||
!default.mode2v3
|
||||
!default.perspectivev3
|
||||
|
||||
xcuserdata
|
||||
|
||||
*.moved-aside
|
||||
|
||||
*.pyc
|
||||
*sync/
|
||||
Icon?
|
||||
.tags*
|
||||
|
||||
/Flutter/app.flx
|
||||
/Flutter/app.zip
|
||||
/Flutter/flutter_assets/
|
||||
/Flutter/App.framework
|
||||
/Flutter/Flutter.framework
|
||||
/Flutter/Generated.xcconfig
|
||||
/ServiceDefinitions.json
|
||||
|
||||
Pods/
|
||||
.symlinks/
|
@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>App</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>io.flutter.flutter.app</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>App</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>8.0</string>
|
||||
</dict>
|
||||
</plist>
|
@ -1,2 +0,0 @@
|
||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
||||
#include "Generated.xcconfig"
|
@ -1,2 +0,0 @@
|
||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
||||
#include "Generated.xcconfig"
|
63
ios/Podfile
@ -1,63 +0,0 @@
|
||||
# Uncomment this line to define a global platform for your project
|
||||
# platform :ios, '9.0'
|
||||
|
||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||
|
||||
def parse_KV_file(file, separator='=')
|
||||
file_abs_path = File.expand_path(file)
|
||||
if !File.exists? file_abs_path
|
||||
return [];
|
||||
end
|
||||
pods_ary = []
|
||||
skip_line_start_symbols = ["#", "/"]
|
||||
File.foreach(file_abs_path) { |line|
|
||||
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
|
||||
plugin = line.split(pattern=separator)
|
||||
if plugin.length == 2
|
||||
podname = plugin[0].strip()
|
||||
path = plugin[1].strip()
|
||||
podpath = File.expand_path("#{path}", file_abs_path)
|
||||
pods_ary.push({:name => podname, :path => podpath});
|
||||
else
|
||||
puts "Invalid plugin specification: #{line}"
|
||||
end
|
||||
}
|
||||
return pods_ary
|
||||
end
|
||||
|
||||
target 'Runner' do
|
||||
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
|
||||
# referring to absolute paths on developers' machines.
|
||||
system('rm -rf .symlinks')
|
||||
system('mkdir -p .symlinks/plugins')
|
||||
|
||||
# Flutter Pods
|
||||
generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
|
||||
if generated_xcode_build_settings.empty?
|
||||
puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
|
||||
end
|
||||
generated_xcode_build_settings.map { |p|
|
||||
if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
|
||||
symlink = File.join('.symlinks', 'flutter')
|
||||
File.symlink(File.dirname(p[:path]), symlink)
|
||||
pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
|
||||
end
|
||||
}
|
||||
|
||||
# Plugin Pods
|
||||
plugin_pods = parse_KV_file('../.flutter-plugins')
|
||||
plugin_pods.map { |p|
|
||||
symlink = File.join('.symlinks', 'plugins', p[:name])
|
||||
File.symlink(p[:path], symlink)
|
||||
pod p[:name], :path => File.join(symlink, 'ios')
|
||||
}
|
||||
end
|
||||
|
||||
post_install do |installer|
|
||||
installer.pods_project.targets.each do |target|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['ENABLE_BITCODE'] = 'NO'
|
||||
end
|
||||
end
|
||||
end
|
@ -1,588 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0828E495220692B500A59437 /* iPhone Portrait-Retina 4.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E486220692B400A59437 /* iPhone Portrait-Retina 4.png */; };
|
||||
0828E496220692B500A59437 /* iPad Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E487220692B400A59437 /* iPad Portrait.png */; };
|
||||
0828E497220692B500A59437 /* iPhone X_XS Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E488220692B400A59437 /* iPhone X_XS Landscape.png */; };
|
||||
0828E498220692B500A59437 /* iPhone XS Max Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E489220692B400A59437 /* iPhone XS Max Portrait.png */; };
|
||||
0828E499220692B500A59437 /* iPhone Portrait-Retina HD 4.7.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E48A220692B400A59437 /* iPhone Portrait-Retina HD 4.7.png */; };
|
||||
0828E49A220692B500A59437 /* iPhone X_XS Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E48B220692B400A59437 /* iPhone X_XS Portrait.png */; };
|
||||
0828E49B220692B500A59437 /* iPad Landscape@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E48C220692B400A59437 /* iPad Landscape@2x.png */; };
|
||||
0828E49C220692B500A59437 /* iPhone Landscape-Retina HD 5.5.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E48D220692B400A59437 /* iPhone Landscape-Retina HD 5.5.png */; };
|
||||
0828E49D220692B500A59437 /* iPhone Portrait@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E48E220692B400A59437 /* iPhone Portrait@2x.png */; };
|
||||
0828E49E220692B500A59437 /* iPad Portrait@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E48F220692B400A59437 /* iPad Portrait@2x.png */; };
|
||||
0828E49F220692B500A59437 /* iPhone XS Max Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E490220692B400A59437 /* iPhone XS Max Landscape.png */; };
|
||||
0828E4A0220692B500A59437 /* iPad Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E491220692B500A59437 /* iPad Landscape.png */; };
|
||||
0828E4A1220692B500A59437 /* iPhone XR Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E492220692B500A59437 /* iPhone XR Portrait.png */; };
|
||||
0828E4A2220692B500A59437 /* iPhone Portrait-Retina HD 5.5.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E493220692B500A59437 /* iPhone Portrait-Retina HD 5.5.png */; };
|
||||
0828E4A3220692B500A59437 /* iPhone XR Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 0828E494220692B500A59437 /* iPhone XR Landscape.png */; };
|
||||
0828E4A52206936100A59437 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0828E4A42206936100A59437 /* Images.xcassets */; };
|
||||
084A20882202E4FD00428FF5 /* flutter go.png in Resources */ = {isa = PBXBuildFile; fileRef = 084A20872202E4FD00428FF5 /* flutter go.png */; };
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||
333E5DAE7FC10AC69FEC26C0 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DDA792F029EDD7A11295D192 /* libPods-Runner.a */; };
|
||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
|
||||
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
94722E5C22511D3600F63900 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 94722E5B22511D3600F63900 /* GoogleService-Info.plist */; };
|
||||
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
|
||||
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
|
||||
97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
|
||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
|
||||
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0828E486220692B400A59437 /* iPhone Portrait-Retina 4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone Portrait-Retina 4.png"; sourceTree = "<group>"; };
|
||||
0828E487220692B400A59437 /* iPad Portrait.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPad Portrait.png"; sourceTree = "<group>"; };
|
||||
0828E488220692B400A59437 /* iPhone X_XS Landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone X_XS Landscape.png"; sourceTree = "<group>"; };
|
||||
0828E489220692B400A59437 /* iPhone XS Max Portrait.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone XS Max Portrait.png"; sourceTree = "<group>"; };
|
||||
0828E48A220692B400A59437 /* iPhone Portrait-Retina HD 4.7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone Portrait-Retina HD 4.7.png"; sourceTree = "<group>"; };
|
||||
0828E48B220692B400A59437 /* iPhone X_XS Portrait.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone X_XS Portrait.png"; sourceTree = "<group>"; };
|
||||
0828E48C220692B400A59437 /* iPad Landscape@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPad Landscape@2x.png"; sourceTree = "<group>"; };
|
||||
0828E48D220692B400A59437 /* iPhone Landscape-Retina HD 5.5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone Landscape-Retina HD 5.5.png"; sourceTree = "<group>"; };
|
||||
0828E48E220692B400A59437 /* iPhone Portrait@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone Portrait@2x.png"; sourceTree = "<group>"; };
|
||||
0828E48F220692B400A59437 /* iPad Portrait@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPad Portrait@2x.png"; sourceTree = "<group>"; };
|
||||
0828E490220692B400A59437 /* iPhone XS Max Landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone XS Max Landscape.png"; sourceTree = "<group>"; };
|
||||
0828E491220692B500A59437 /* iPad Landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPad Landscape.png"; sourceTree = "<group>"; };
|
||||
0828E492220692B500A59437 /* iPhone XR Portrait.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone XR Portrait.png"; sourceTree = "<group>"; };
|
||||
0828E493220692B500A59437 /* iPhone Portrait-Retina HD 5.5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone Portrait-Retina HD 5.5.png"; sourceTree = "<group>"; };
|
||||
0828E494220692B500A59437 /* iPhone XR Landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iPhone XR Landscape.png"; sourceTree = "<group>"; };
|
||||
0828E4A42206936100A59437 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
084A20872202E4FD00428FF5 /* flutter go.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "flutter go.png"; sourceTree = "<group>"; };
|
||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
94722E5B22511D3600F63900 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
|
||||
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
A9941E6EA19A9CEF6B117A70 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
||||
CBA6E34746642008D95A119D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
DDA792F029EDD7A11295D192 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
97C146EB1CF9000F007C117D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
|
||||
3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
|
||||
333E5DAE7FC10AC69FEC26C0 /* libPods-Runner.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0828E485220692A700A59437 /* launch */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0828E491220692B500A59437 /* iPad Landscape.png */,
|
||||
0828E48C220692B400A59437 /* iPad Landscape@2x.png */,
|
||||
0828E48F220692B400A59437 /* iPad Portrait@2x.png */,
|
||||
0828E487220692B400A59437 /* iPad Portrait.png */,
|
||||
0828E48D220692B400A59437 /* iPhone Landscape-Retina HD 5.5.png */,
|
||||
0828E486220692B400A59437 /* iPhone Portrait-Retina 4.png */,
|
||||
0828E48A220692B400A59437 /* iPhone Portrait-Retina HD 4.7.png */,
|
||||
0828E493220692B500A59437 /* iPhone Portrait-Retina HD 5.5.png */,
|
||||
0828E48E220692B400A59437 /* iPhone Portrait@2x.png */,
|
||||
0828E488220692B400A59437 /* iPhone X_XS Landscape.png */,
|
||||
0828E48B220692B400A59437 /* iPhone X_XS Portrait.png */,
|
||||
0828E494220692B500A59437 /* iPhone XR Landscape.png */,
|
||||
0828E492220692B500A59437 /* iPhone XR Portrait.png */,
|
||||
0828E490220692B400A59437 /* iPhone XS Max Landscape.png */,
|
||||
0828E489220692B400A59437 /* iPhone XS Max Portrait.png */,
|
||||
);
|
||||
path = launch;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0C172CA58CDB230D5DA80034 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
CBA6E34746642008D95A119D /* Pods-Runner.debug.xcconfig */,
|
||||
A9941E6EA19A9CEF6B117A70 /* Pods-Runner.release.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
2EC8A3499721CE770475DCE7 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DDA792F029EDD7A11295D192 /* libPods-Runner.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9740EEB11CF90186004384FC /* Flutter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3B80C3931E831B6300D905FE /* App.framework */,
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
|
||||
9740EEBA1CF902C7004384FC /* Flutter.framework */,
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */,
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
|
||||
9740EEB31CF90195004384FC /* Generated.xcconfig */,
|
||||
);
|
||||
name = Flutter;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146E51CF9000F007C117D = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0828E485220692A700A59437 /* launch */,
|
||||
084A20872202E4FD00428FF5 /* flutter go.png */,
|
||||
9740EEB11CF90186004384FC /* Flutter */,
|
||||
97C146F01CF9000F007C117D /* Runner */,
|
||||
97C146EF1CF9000F007C117D /* Products */,
|
||||
0C172CA58CDB230D5DA80034 /* Pods */,
|
||||
2EC8A3499721CE770475DCE7 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146EF1CF9000F007C117D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
97C146EE1CF9000F007C117D /* Runner.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146F01CF9000F007C117D /* Runner */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
94722E5B22511D3600F63900 /* GoogleService-Info.plist */,
|
||||
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
|
||||
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
|
||||
97C146FA1CF9000F007C117D /* Main.storyboard */,
|
||||
97C146FD1CF9000F007C117D /* Assets.xcassets */,
|
||||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
|
||||
97C147021CF9000F007C117D /* Info.plist */,
|
||||
97C146F11CF9000F007C117D /* Supporting Files */,
|
||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
|
||||
0828E4A42206936100A59437 /* Images.xcassets */,
|
||||
);
|
||||
path = Runner;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146F11CF9000F007C117D /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
97C146F21CF9000F007C117D /* main.m */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
97C146ED1CF9000F007C117D /* Runner */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||
buildPhases = (
|
||||
443E32A5789BE5CCDA6B5E59 /* [CP] Check Pods Manifest.lock */,
|
||||
9740EEB61CF901F6004384FC /* Run Script */,
|
||||
97C146EA1CF9000F007C117D /* Sources */,
|
||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||
97C146EC1CF9000F007C117D /* Resources */,
|
||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||
C38E5EAE601417DA9DF11753 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Runner;
|
||||
productName = Runner;
|
||||
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
97C146E61CF9000F007C117D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1000;
|
||||
ORGANIZATIONNAME = "The Chromium Authors";
|
||||
TargetAttributes = {
|
||||
97C146ED1CF9000F007C117D = {
|
||||
CreatedOnToolsVersion = 7.3.1;
|
||||
DevelopmentTeam = 4WLT68XRNA;
|
||||
ProvisioningStyle = Manual;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
English,
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 97C146E51CF9000F007C117D;
|
||||
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
97C146ED1CF9000F007C117D /* Runner */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
97C146EC1CF9000F007C117D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0828E4A0220692B500A59437 /* iPad Landscape.png in Resources */,
|
||||
0828E4A1220692B500A59437 /* iPhone XR Portrait.png in Resources */,
|
||||
0828E49F220692B500A59437 /* iPhone XS Max Landscape.png in Resources */,
|
||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
|
||||
0828E4A3220692B500A59437 /* iPhone XR Landscape.png in Resources */,
|
||||
0828E4A2220692B500A59437 /* iPhone Portrait-Retina HD 5.5.png in Resources */,
|
||||
0828E49A220692B500A59437 /* iPhone X_XS Portrait.png in Resources */,
|
||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
|
||||
0828E49E220692B500A59437 /* iPad Portrait@2x.png in Resources */,
|
||||
0828E49D220692B500A59437 /* iPhone Portrait@2x.png in Resources */,
|
||||
0828E499220692B500A59437 /* iPhone Portrait-Retina HD 4.7.png in Resources */,
|
||||
084A20882202E4FD00428FF5 /* flutter go.png in Resources */,
|
||||
0828E497220692B500A59437 /* iPhone X_XS Landscape.png in Resources */,
|
||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
|
||||
0828E4A52206936100A59437 /* Images.xcassets in Resources */,
|
||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
|
||||
0828E49B220692B500A59437 /* iPad Landscape@2x.png in Resources */,
|
||||
0828E495220692B500A59437 /* iPhone Portrait-Retina 4.png in Resources */,
|
||||
0828E498220692B500A59437 /* iPhone XS Max Portrait.png in Resources */,
|
||||
94722E5C22511D3600F63900 /* GoogleService-Info.plist in Resources */,
|
||||
0828E496220692B500A59437 /* iPad Portrait.png in Resources */,
|
||||
0828E49C220692B500A59437 /* iPhone Landscape-Retina HD 5.5.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Thin Binary";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
|
||||
};
|
||||
443E32A5789BE5CCDA6B5E59 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
9740EEB61CF901F6004384FC /* Run Script */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Run Script";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||
};
|
||||
C38E5EAE601417DA9DF11753 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
|
||||
"${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
97C146EA1CF9000F007C117D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
|
||||
97C146F31CF9000F007C117D /* main.m in Sources */,
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
97C146FB1CF9000F007C117D /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
97C147001CF9000F007C117D /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
97C147031CF9000F007C117D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
97C147041CF9000F007C117D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
97C147061CF9000F007C117D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = Launch2;
|
||||
CODE_SIGN_IDENTITY = "iPhone Distribution";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = 4WLT68XRNA;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.alibaba.fluttergo;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = FlutterGO_alibaba_distribution_app_store;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
97C147071CF9000F007C117D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = Launch2;
|
||||
CODE_SIGN_IDENTITY = "iPhone Distribution";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
DEVELOPMENT_TEAM = 4WLT68XRNA;
|
||||
ENABLE_BITCODE = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Flutter",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.alibaba.fluttergo;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = FlutterGO_alibaba_distribution_ad_hoc;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
97C147031CF9000F007C117D /* Debug */,
|
||||
97C147041CF9000F007C117D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
97C147061CF9000F007C117D /* Debug */,
|
||||
97C147071CF9000F007C117D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 97C146E61CF9000F007C117D /* Project object */;
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
@ -1,91 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1000"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Release"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
10
ios/Runner.xcworkspace/contents.xcworkspacedata
generated
@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildSystemType</key>
|
||||
<string>Original</string>
|
||||
</dict>
|
||||
</plist>
|
@ -1,6 +0,0 @@
|
||||
#import <Flutter/Flutter.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : FlutterAppDelegate
|
||||
|
||||
@end
|
@ -1,19 +0,0 @@
|
||||
#include "AppDelegate.h"
|
||||
#include "GeneratedPluginRegistrant.h"
|
||||
|
||||
@import Firebase;//增加 firebase 支持
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
- (BOOL)application:(UIApplication *)application
|
||||
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
|
||||
[FIRApp configure];//增加 firebase 支持
|
||||
|
||||
[GeneratedPluginRegistrant registerWithRegistry:self];
|
||||
// Override point for customization after application launch.
|
||||
[NSThread sleepForTimeInterval:2];
|
||||
return [super application:application didFinishLaunchingWithOptions:launchOptions];
|
||||
}
|
||||
|
||||
@end
|
@ -1,13 +0,0 @@
|
||||
import UIKit
|
||||
import Flutter
|
||||
|
||||
@UIApplicationMain
|
||||
@objc class AppDelegate: FlutterAppDelegate {
|
||||
override func application(
|
||||
_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
|
||||
) -> Bool {
|
||||
GeneratedPluginRegistrant.register(with: self)
|
||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 725 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.0 KiB |