- Links
- Index
- Manual
- Note
- Experience
- ERPX App Code
Start
Flutter: New Project
如何运行
- 修改了 pubspec.yaml 会自动执行 flutter pug get
VS Code 打开项目 Flutter: Select Device
技巧
Cmd + .
Cmd + Shift + Space
Links
- 借助:json_serializable 和 build_runner、json_annotation 库实现
- https://github.com/Solido/awesome-flutter
- https://github.com/Anxcye/anx-reader
- https://guoshuyu.cn/home/wx/
- xcode编译flutter各种疑难问题
- flutter-添加下拉刷新
- Flutter 联网和JSON转换成Bean
- https://caijinglong.github.io/json2dart/index.html
- Dart 语言指引
- Flutter API 文档
- flutter_html flutter_html style
- TextField 光标位置
- https://zhuanlan.zhihu.com/p/394032442
- https://www.cnblogs.com/yjpjy/p/11504522.html
- Json转Dart Model类
- Fish Redux系列学习之初探
- flutter项目源码集锦(转载)
- Flutter 7 个开源项目推荐 01
- 从新手到Flutter架构师,一篇就够!Flutter 最全开源项目(UI、导航、网络、音视频...FlutterDeveloper
- 7个Flutter开源项目让你成为更好的Flutter开发者
Index
- Get started ✓
- From another platform
- Dart language overview
- building a web app
- https://codelabs.developers.google.com/codelabs/flutter-codelab-first
- Samples & tutorials
- Sample apps on GitHub
- Cookbook ★
- Animation
- Design
- Effects
- Forms
- Gestures
- Images
- Lists
- Maintenance
- Navigation
- Networking
- Persistence
- Plugins
- Testing
- Integration
- Unit
- Widget
- Codelabs
Turorials
- Development
- User interface
- Intoduction to widgets ✓
- Building layouts
- Adding interactivity
- Assets and images ✓
- [Navigation and routing]
- Navigation in Flutter ✓
- Deep linking
- URL strategies
- Animations
- Advaced UI
- Widget catalog
- Data & backend
- Accessibility & internationalization
- Platform integration
- Packages & plugins
- Add Flutter to existing app
- Tools & features
- Migration notes
- User interface
- Testing & debugging
- Performance & optimization
- Deployment
- Resources
- Reference
Manual
Note
main
void main() {
runApp(
const Center(),
);
}
概念
Stateless / Stateful final widget
基础 widgets
Icon Icons ✓
Color Colors ✓
Container
BoxDecoration
border: Border.all(width: 10, color: Colors.black38),
borderRadius: const BorderRadius.all(Radius.circular(8)),
Wrap
GridView
Image
Row,Column
MainAxisalignment.spaceEvenly
MainAxisSize.min
Stack
Positioned
MaterialApp ?
SafeArea
Material class
Cupertino ?
Expanded
flex
AppBar
Scaffold
GestureDetector
SizedBox
ListView
GridView
ListTile (Material)
Card (Material)
Elevation
CircleAvatarAvatar
其他类
- PreferredSize
- AnimatedContainer
- MaterialPageRoute 创建新路由
- Navigator
- pushName
- ModalRout.of()
- MaterialApp 和 CupertinoApp 构造器中的 onGenerateRoute() 来获取参数
EdgeInsets
BoxFit
DefaultTextStyle.merge()
经验
- Fields in a Widget subclass are always marked "final".
- .. 两个点 cascade notation 级联符号,可以连续调用同一个对象上的属性或方法。
- 更改 assets 要重新run
- 设置宽度 100%
width: double.infinity // 定位下会失效 width: MediaQuery.of(context).size.width
iOS
打包:
Product → Archive → distribute → development
其他问题
@override
fish redux state.remindController.text
https://www.jianshu.com/p/a1cf5cbad006
https://www.6hu.cc/archives/5585.html
https://zhuanlan.zhihu.com/p/94684556
https://blog.csdn.net/qq_38774121/article/details/114916292
Theme.of
part of
ERPX App
- 修改 net_engine.dart 接口,要重新生成 .d.dart 文件:
# 一次构建
flutter packages pub run build_runner build --delete-conflicting-outputs
# 修改完成后,ctrl+s保存,实时构建
flutter packages pub run build_runner watch --delete-conflicting-outputs
- Android 打包
flutter build apk --target-platform android-arm,android-arm64
packages
widget_lib/loading.dart flutter_refresh flutter/src/material/refresh_indicator.dart shared_preferences: ^2.2.2 # 轻量级本地键值对存储,可以缓存数据
main.dart
//flutter packages pub run build_runner build --delete-conflicting-outputs //flutter build apk --target-platform android-arm,android-arm64
ErrorHelper.catchError WidgetsFlutterBinding.ensureInitialized(); // 设置竖屏 // SystemChrome.setPreferredOrientations( // [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeRight, DeviceOrientation.landscapeRight, ]);
RightCache().setStockCardType(true);
mLocalStore
assert
import '../ui/process_log.dart';
static
ViewService viewService
FloatingActionButton
setRawSize
state clone()
child: SizedBox(
height: 200,
child: GridView.builder(
itemCount: 4,
//SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
mainAxisSpacing: 20.0,
crossAxisSpacing: 10.0,
),
itemBuilder: (BuildContext context, int index) {
//Widget Function(BuildContext context, int index)
// return getItemContainer(datas[index]);
return TextButton(
child: Row(
children: [
new Icon(Icons.check_circle_outline_rounded),
Text(state.filterParams[i]['name']),
],
),
onPressed: () async {
if (state.queryTradeOrderPageParams['pageTab'] == '2') {
return;
}
await dispatch(
OrderListActionCreator.setTradeOrderPageParams({
'key': 'pageTab',
'value': '2',
}));
await dispatch(OrderListActionCreator.onHeaderRefresh());
},
);
},
),
),
builder