Flutter开发(七):Flutter页面跳转
注释:下面代码理解就可以,不用跟着写。1.Flutter 中 Intent 跳转Flutter 中没有 Intent,可以通过 Native 整合来触发 Intents。当需要调用相机、文件管理器等,需要第三方插件。别人总结的插件库:插件库2.Flutter 实现不同页面的跳转切换屏幕与,可以访问路由来绘制新的 widget,管理多个屏幕有两个核心概念和类:Route 和 Navigator。Ro
注释:下面代码理解就可以,不用跟着写。
1.Flutter 中 Intent 跳转
Flutter 中没有 Intent,可以通过 Native 整合来触发 Intents。
当需要调用相机、文件管理器等,需要第三方插件。
别人总结的插件库:插件库
2.Flutter 实现不同页面的跳转
切换屏幕与,可以访问路由来绘制新的 widget,管理多个屏幕有两个核心概念和类:Route 和 Navigator。Route 是应用程序页面(activity)的抽象,Navigator 是管理 Route 的 Widget。
Navigator 通过 push 和 pop route 实现页面切换。
在 Android 中,可以在 AndroidManifest.xml 中声明 Activities。在 Flutter 中可以具有指定的 Route 的 Map 传递到顶层 MaterialApp 实例。
push() 打开页面,pop() 从上个页面返回。
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
routes: <String,WidgetBuilder>{
// 其中/a代表页面a
'/a':(BuildContext context) => MyPage(title:'page A'),
'/b':(BuildContext context) => MyPage(title:'page B'),
'/c':(BuildContext context) => MyPage(title:'page C'),
},
);
}
}
通过 Navigator 调用 push 实现跳转
Navigator.of(context).pushNamed('/b');
除了上面的方法,还可以 Navigator 中的 push 方法, 给定 route 。实现跳转。
Navigator.push(context,MaterialPageRoute(builder:
(BuildContext context)=> UsualNavscreen()));
3.获取跳转返回结果
Navigator 不仅可以处理跳转,还被用来获取到返回结果。通过 await 来获取返回结果。
如,A页面跳转到B页面,B页面返回结果;下面是A页面代码:
Map coordinates = await Navigator.of(context).pushNamed('/location');
B页面代码:
Navigator.of(context).pop({"key":"123","key":"321"});
4.Flutter 处理其它应用程序传入 Intents
在 Android 中,首先用 activity 获取到其它 app 传过来的数据,再通过 MethodChannel 发送给 Flutter。
<activity
android:name="com.sinosoft.cs.login.MainActivity"
android:exported="true"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
在 MainActivity 中的 onCreate 方法中加入:
用 handleSendText 方法获取到传来的文本,用 MethodChannel 方法把文本传给 Flutter 。
在 Flutter 中的代码:
首先定义了 MethodChannel 名字和 activity 中的一致,然后通过 initState() 方法中的 getSharedText() 获取到传来的文字。
5.跳转到其它 APP
使用插件 url_launcher :https://pub.dev/packages/url_launcher
更多推荐
所有评论(0)