然后bean类在声明的时候是混入了JsonConvert的,可以直接使用JsonConvert里面的方法,完美.
5.5 Flutter ScrollView (滚动视图)
ScrollView是一个带有滚动的视图组件,它本身由三部分组成
-
Scrollable - 它监听各种用户手势并实现滚动的交互设计。
-
Viewport - 它通过在滚动视图内仅显示一部分小部件来实现滚动的可视化设计。
-
Slider - 它们是可以组合以创建各种滚动效果的小部件,如列表,网格和扩展标题。
Scroll是一个抽象类,通常使用CustomScrollView
CustomScrollView(
shrinkWrap: true,
// 内容
slivers: [
new SliverPadding(
padding: const EdgeInsets.all(20.0),
sliver: new SliverList(
delegate: new SliverChildListDelegate(
[
const Text(‘A’),
const Text(‘B’),
const Text(‘C’),
const Text(‘D’),
],
),
),
),
],
)
5.6 处理Text超出问题
可以放Row或Column中,用Expanded包起来,然后用maxLines控制行数,用overflow: TextOverflow.ellipsis,
控制超出部分的展示.
5.7 让一个ListView支持下拉刷新
非常简单,
使用官方自带的RefreshIndicator即可,将listview放child,然后实现一个_pullToRefresh下拉刷新时调用的方法(做下拉刷新的逻辑).
RefreshIndicator(
child: listView,
onRefresh: _pullToRefresh,
);
Future _pullToRefresh() {
loadData();
//这里Feature不能返回 null
return Future(() => LogUtil.d(“lalala”));
}
5.8 获取屏幕宽度,高度
MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height
5.9 封装通用标题栏
标题栏,每个界面都需要,所以封装一个,取需.
///get通用状态栏
static AppBar getCommonAppBar(BuildContext context, String title, {double fontSize, List actions}) {
if (title == null) {
title = “”;
}
return AppBar(
leading: IconButton(
icon: Icon(
Icons.arrow_back,
color: Colors.white,
),
//点击返回
onPressed: () {
if (context != null) {
Navigator.pop(context);
}
},
),
title: Text(
title,
style: TextStyle(
color: Colors.white,
fontSize: fontSize == null ? 18.0 : fontSize,
),
),
//标题栏居中
centerTitle: true,
//右边的action 按钮
actions: actions == null ? [] : actions,
);
}
5.10 格式化String
dart中格式化String,需要引入三方库sprintf
,使用方式如下:
sprintf(“lg/collect/%s/json”, [15615]);
5.11 获取Android/iOS本地目录
需要引入三方库path_provider
,用于查找文件系统上的常用位置,支持Android和iOS.免得去写一原生代码,这个三方库帮我们封装好了.
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
5.12 展示一个Dialog
以下方法是dart的material包下面的方法.
//展示对话框
showDialog(
context: context,
barrierDismissible: false,
builder: (_) {
return SpinKitFadingCircle(
color: AppColors.colorPrimary,
);
});
//取消对话框
Navigator.of(context).pop();
5.13 间距的简单方式
可以用Padding和margin来实现.其实还有一种方式,可以在Column和Row中快速增加一段间距,利用SizedBox,类似Android中的Space
SizedBox(width: 10.0),
5.14 收起软键盘
总结
其实要轻松掌握很简单,要点就两个:
- 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
- 多练。 (视频优势是互动感强,容易集中注意力)
你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
多练。 (视频优势是互动感强,容易集中注意力)
你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。
[外链图片转存中…(img-CigGDD54-1715263621561)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!