注释:下面代码理解就可以,不用跟着写。

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

Logo

智屏生态联盟致力于大屏生态发展,利用大屏快应用技术降低开发者开发、发布大屏应用门槛

更多推荐