(Route route) => false,
);
导航到新页面,在返回时接收返回数据:
var data = await Get.to(NextScreen());
对应原生路由:
var data = await Navigator.push(context, MaterialPageRoute(
builder: (BuildContext context) {
return NextScreen();
},
));
带返回值返回前一个路由,配合上面使用:
Get.back(result: ‘success’);
对应原生路由:
Navigator.pop(context, ‘success’);
别名路由导航
- 声明别名:
abstract class Routes {
static const Initial = ‘/’;
static const NextScreen = ‘/NextScreen’;
}
- 注册路由表:
abstract class AppPages {
static final pages = [
GetPage(
name: Routes.Initial,
page: () => HomePage(),
),
GetPage(
name: Routes.NextScreen,
page: () => NextScreen(),
),
];
}
- 替换MaterialApp为GetMaterialApp:
void main() {
runApp(GetMaterialApp(
debugShowCheckedModeBanner: false,
initialRoute: ‘/’,
theme: appThemeData,
defaultTransition: Transition.fade,
getPages: AppPages.pages,
home: HomePage(),
));
}
使用
导航到下一个页面:
Get.toNamed(Routes.NextScreen);
导航到下一个页面并删除前一个页面:
Get.offNamed(Routes.NextScreen);
导航到下一个页面并删除以前所有的页面:
Get.offAllNamed(Routes.NextScreen);
发送数据到别名路由:
Get在这里接受任何东西,无论是一个字符串,一个Map,一个List,甚至一个类的实例。
Get.toNamed(Routes.NextScreen, arguments: ‘新垣结衣’);
获取参数:
String name=Get.arguments;
动态网页链接:
像web一样携带参数,适合前端开发的风格。
Get.offAllNamed(“/NextScreen?device=phone&id=354&name=Enzo”);
获取参数:
int id = Get.parameters[‘id’];
// out: 354
String name=Get.parameters[‘name’];
还可以这样定义路由别名:
GetPage(
name: ‘/profile/:user’,
page: () => UserProfile(),
),
导航:
Get.toNamed(“/profile/34954”);
在第二个页面上,通过参数获取数据
print(Get.parameters[‘user’]);
// out: 34954
中间件
在跳转前做些事情,比如判断是否登录,可以使用routingCallback来实现:
GetMaterialApp(
routingCallback: (routing) {
if(routing.current == ‘/second’){
// 如果登录。。。
}
}
)
小部件导航
SnackBars
弹出:
Get.snackbar(‘Hi’, ‘i am a modern snackbar’);
对应原生写法:
final snackBar = SnackBar(
content: Text(‘Hi!’),
action: SnackBarAction(
label: ‘I am a old and ugly snackbar’,
onPressed: (){}
),
);
//用Flutter创建一个简单的SnackBar,你必须获得Scaffold的context,或者你必须使用一个GlobalKey附加到你的Scaffold上。
Scaffold.of(context).showSnackBar(snackBar);
Dialogs
打开一个默认的Dialog:
Get.defaultDialog(
onConfirm: () => print(“Ok”),
middleText: “Dialog made in 3 lines of code”
);
打开自定义的Dialog:
Get.dialog(YourDialogWidget());
BottomSheets
Get.bottomSheet类似于showModalBottomSheet,但不需要context:
Get.bottomSheet(
Container(
child: Wrap(
children: [
ListTile(
leading: Icon(Icons.music_note),
title: Text(‘Music’),
onTap: () => {}
),
ListTile(
leading: Icon(Icons.videocam),
title: Text(‘Video’),
onTap: () => {},
),
最后
今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
【Android核心高级技术PDF文档,BAT大厂面试真题解析】
【算法合集】
【延伸Android必备知识点】
【Android部分高级架构视频学习资源】
Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!