【发布时间】:2019-05-07 19:03:40
【问题描述】:
我是 Flutter 的新手。我想在 Android 和颤振之间进行交流。我已经使用方法通道从颤振中打开了一个 android 活动。现在从当前的 android 活动。我想点击一个按钮打开一个飞镖文件。如何在 Flutter 中实现这一点?
//这是主要的。 dart 类,我使用方法通道从中打开了一个活动。
class Communication extends StatefulWidget
{
@override
State<StatefulWidget> createState() {
return MyCommunication();
}
}
class MyCommunication extends State<Communication>
{
static const platform = const MethodChannel("test_activity");
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container(
child: getNewActivity(),
),
)
/*new MaterialButton(
child: const Text('Open Screen'),
elevation: 5.0,
height: 48.0,
minWidth: 250.0,
color: Colors.blue,
textColor: Colors.white,
onPressed: () {
_getNewActivity();
})*/
);
}
getNewActivity() async{
try {
await platform.invokeMethod('startNewActivity');
} on PlatformException catch (e) {
print(e.message);
}
}
}
//这是我的主要活动
类 MainActivity(): FlutterActivity() {
private val CHANNEL = "test_activity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this)
MethodChannel(flutterView, CHANNEL).setMethodCallHandler(
object : MethodChannel.MethodCallHandler {
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
if(call.method.equals("startNewActivity")) {
startNewActivity()
}
}
})
}
private fun startNewActivity() {
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
}
}
//这是我必须打开其中包含一些小部件的 dart 文件的第二个活动。
class SecondActivity : AppCompatActivity(), View.OnClickListener {
override fun onClick(p0: View?) {
when(p0!!.id)
{
R.id.btn ->
{
var intent = Intent(this, MainActivity::class.java)
intent.setAction(Intent.ACTION_RUN)
intent.putExtra("route","screen2");
startActivity(intent);
}
}
}
var button:Button?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.second_actvity)
button=findViewById(R.id.btn);
button!!.setOnClickListener(this)
// setSupportActionBar(toolbar)
// Now get the support action bar
val actionBar = supportActionBar
// Set toolbar title/app title
actionBar!!.title = "Android Component"
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
}
override fun onSupportNavigateUp(): Boolean {
onBackPressed()
return true
}
}
【问题讨论】:
-
flutter.io/docs/development/packages-and-plugins/…(同样的东西也可以直接用在你的应用项目中)
-
你能把这方面的代码分享给我吗?
-
github.com/flutter/plugins 都是专门用于为 Flutter/Dart 提供各种原生功能的包。 pub.dartlang.org/flutter/packages?q=plugin 列出了来自社区的相同内容和更多内容。
-
如文档中所述,您必须在您的 android 项目上创建频道。示例在文档中。这份官方文档做得很好,很完整
-
我已经编辑了我的问题。现在我需要为此再创建一个方法通道。请帮助我不知道如何以编程方式进行
标签: flutter