Flutter MaterialApp
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
navigatorKey: NavigatorKeyUtils.navigatorKey,
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
routes: <String, WidgetBuilder>{
'/MyHomePage': (BuildContext context) {
return MyHomePage();
},
'/TwoPage': (BuildContext context) {
return TwoPage();
},
},
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('data'),
),
body: Center(
child: GestureDetector(
onTap: () {
NavigatorKeyUtils.navigatorKey.currentState.pushNamed('/TwoPage');
},
child: Container(
color: Colors.blue,
child: Text('点击跳转'),
),
),
),
//child: Text.rich(TextSpan(text: 'final InlineSpan textSpan / The text to display as a [InlineSpan]')),
);
}
}
class TwoPage extends StatefulWidget {
TwoPage({Key key, this.title}) : super(key: key);
final String title;
@override
_TwoPageState createState() => _TwoPageState();
}
class _TwoPageState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('data'),
),
body: Center(
child: Container(
width: 200.0,
//height: 100.0,
color: Colors.blue,
child: Text(
'TwoPage',
textDirection: TextDirection.ltr,
overflow: TextOverflow.visible,
textScaleFactor: 1.0,
textWidthBasis: TextWidthBasis.longestLine,
textHeightBehavior: TextHeightBehavior(
applyHeightToFirstAscent: true, applyHeightToLastDescent: true),
),
),
),
//child: Text.rich(TextSpan(text: 'final InlineSpan textSpan / The text to display as a [InlineSpan]')),
);
}
}
home
相当于一个应用程序的首页
routes
Map<String, WidgetBuilder> routes / Map集合
方便通过路由名称进行跳转到指定的路由(页面)
routes: <String, WidgetBuilder>{
'/MyHomePage': (BuildContext context) {
return MyHomePage();
},
'/TwoPage': (BuildContext context) {
return TwoPage();
},
},
NavigatorKeyUtils.navigatorKey.currentState.pushNamed(‘/TwoPage’);
initialRoute
会覆盖应用程序首页(home)
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
navigatorKey: NavigatorKeyUtils.navigatorKey,
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
routes: <String, WidgetBuilder>{
'/InitPage': (BuildContext context) {
return InitPage();
},
'/MyHomePage': (BuildContext context) {
return MyHomePage();
},
'/TwoPage': (BuildContext context) {
return TwoPage();
},
},
initialRoute: '/InitPage',
);
}
}
onGenerateRoute
生成路由,当你跳转的路由中不存在该该路由,那么就由生成路由代替
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
navigatorKey: NavigatorKeyUtils.navigatorKey,
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
routes: <String, WidgetBuilder>{
'/InitPage': (BuildContext context) {
return InitPage();
},
'/MyHomePage': (BuildContext context) {
return MyHomePage();
},
'/TwoPage': (BuildContext context) {
return TwoPage();
},
},
//initialRoute: '/InitPage',
onGenerateRoute: (RouteSettings settings) {
return new MaterialPageRoute<void>(
settings: settings,
builder: (BuildContext context) => InitPage(),
);
});
}
}
NavigatorKeyUtils.navigatorKey.currentState.pushNamed(‘/ThreePage’);
导航到路由名称:‘/ThreePage’ 不存在,那么将导航到路由InitPage
onUnknownRoute
效果跟onGenerateRoute一样
调用顺序为onGenerateRoute ==> onUnknownRoute
navigatorObservers
导航路由观察,可以监听到关闭的Page和打开的Page。相关函数有:
didPush()、didPop()、didRemove()、didReplace()、didStartUserGesture()、didStopUserGesture()
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
结语
- 现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。
- 音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。
- 要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且
- OpenCV/OpenGl/这些又是图像处理必备知识,下面这些我都是当年自己搜集的资料和做的一些图,因为当年我就感觉视频这块会是一个大的趋势。所以提前做了一些准备。现在拿出来分享给大家。


《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。
- 要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且
- OpenCV/OpenGl/这些又是图像处理必备知识,下面这些我都是当年自己搜集的资料和做的一些图,因为当年我就感觉视频这块会是一个大的趋势。所以提前做了一些准备。现在拿出来分享给大家。
[外链图片转存中…(img-6zOmO5np-1711816725776)]
[外链图片转存中…(img-KsggfxjY-1711816725776)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
更多推荐


所有评论(0)