运行时闪退,且调试flutter 代码,未进入main函数
来源:11-3 Flutter Android混合开发实战-集成与调用【Android技术与Flutter融合】

weixin_慕无忌8341780
2021-07-21
运行时闪退,且调试flutter 代码,未进入main函数
build.gradle
setting.gradle
MainActivity
package com.example.flutterhybridandroid;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText paramInput = findViewById(R.id.paramInput);
findViewById(R.id.test).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String inputParams = paramInput.getText().toString().trim();
FlutterAppActivity.start(MainActivity.this, inputParams);
startActivity(
FlutterActivity
.withNewEngine()
.initialRoute("route1")
.build(MainActivity.this)
);
}
});
}
}
FlutterAppActivity
package com.example.flutterhybridandroid;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
public class FlutterAppActivity extends FlutterActivity{
public final static String INIT_PARAMS = "initParams";
private String initParams;
public static void start(Context context, String initParams) {
Intent intent = new Intent(context, FlutterAppActivity.class);
intent.putExtra(INIT_PARAMS, initParams);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initParams = getIntent().getStringExtra(INIT_PARAMS);
}
/**
* 重载该方法来传递初始化参数
*
* @return
*/
@NonNull
@Override
public String getInitialRoute() {
return initParams == null ? super.getInitialRoute() : initParams;
}
}
flutter main.dart
import 'dart:ui';
import 'package:flutter/material.dart';
void main() => runApp(MyApp(
initParams: window.defaultRouteName,
));
class MyApp extends StatelessWidget {
final String initParams;
const MyApp({Key? key, required this.initParams}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter 混合开发',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(
title: 'Flutter 混合开发',
initParams: initParams,
),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, this.title = '', this.initParams = ''})
: super(key: key);
final String title;
final String initParams;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
TextStyle textStyle = TextStyle(fontSize: 20);
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Container(
alignment: Alignment.topLeft,
decoration: BoxDecoration(color: Colors.lightBlueAccent),
margin: EdgeInsets.only(top: 70),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Text(
'收到初始参数initParams:${widget.initParams}',
style: textStyle,
),
],
),
),
);
}
}
写回答
1回答
-
CrazyCodeBoy
2021-07-22
看下错误log,根据具体的错误log排查下问题
00
相似问题