Android嵌套Flutter并传值
Android端代码package com.wk.flutterhybridandroid;import androidx.appcompat.app.AppCompatActivity;import androidx.fragment.app.FragmentTransaction;import io.flutter.embedding.android.FlutterFragment;impor
·
Android端代码
package com.wk.flutterhybridandroid;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;
import io.flutter.embedding.android.FlutterFragment;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.test).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
//方法1
//tx.replace(R.id.someContainer, FlutterFragment.createDefault());
//方法2 给Flutter传参
tx.replace(R.id.someContainer,
FlutterFragment
.withNewEngine()
.initialRoute("{name:'devio', dataList: ['aa']}")
.build());
tx.commit();
}
});
findViewById(R.id.test2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FlutterAppActivity.start(MainActivity.this, "");
}
});
}
}
Flutter端代码
import 'dart:async';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(MyApp(initParams: window.defaultRouteName));
class MyApp extends StatelessWidget {
final String? initParams;
const MyApp({Key? key, this.initParams}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter 混合开发',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter 混合开发', initParams: this.initParams),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title, required this.initParams})
: super(key: key);
final String title;
final String? initParams;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
// Codrizontal).
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'initParams: ${widget.initParams}',
style: TextStyle(fontSize: 20),
),
Text(
' ',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
);
}
}

更多推荐
所有评论(0)