• flutter和安卓通信(2)


    import 'dart:async';
    import 'dart:io';
    import 'package:flutter/material.dart';
    import 'package:flutter/services.dart';
    
    void main() {
      runApp(PlatformView());
    }
    
    class PlatformView extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Platform View',
          theme: ThemeData(
            primarySwatch: Colors.grey,
          ),
          home: const MyHomePage(title: 'Platform View'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      const MyHomePage({Key key, this.title}) : super(key: key);
    
      final String title;
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      static const MethodChannel _methodChannel =
          MethodChannel('samples.flutter.io/platform_view');
    
      int _counter = 0;
    
      void _incrementCounter() {
        setState(() {
          _counter++;
        });
      }
    
      Future<void> _launchPlatformCount() async {
        final int platformCounter =
            await _methodChannel.invokeMethod('switchView', _counter);
        setState(() {
          _counter = platformCounter;
        });
      }
    
      @override
      Widget build(BuildContext context) => Scaffold(
            appBar: AppBar(
              title: Text(widget.title),
            ),
            body: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                Expanded(
                  child: Center(
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: <Widget>[
                        Text(
                          'Button tapped $_counter time${ _counter == 1 ? '' : 's' }.',
                          style: const TextStyle(fontSize: 17.0),
                        ),
                        Padding(
                          padding: const EdgeInsets.all(18.0),
                          child: RaisedButton(
                              child: Platform.isIOS
                                  ? const Text('Continue in iOS view')
                                  : const Text('Continue in Android view'),
                              onPressed: _launchPlatformCount),
                        ),
                      ],
                    ),
                  ),
                ),
                Container(
                  padding: const EdgeInsets.only(bottom: 15.0, left: 5.0),
                  child: Row(
                    children: <Widget>[
                      Image.asset('assets/flutter-mark-square-64.png',
                          scale: 1.5),
                      const Text(
                        'Flutter',
                        style: TextStyle(fontSize: 30.0),
                      ),
                    ],
                  ),
                ),
              ],
            ),
            floatingActionButton: FloatingActionButton(
              onPressed: _incrementCounter,
              tooltip: 'Increment',
              child: const Icon(Icons.add),
            ),
          );
    }
    import android.content.Intent;
    import androidx.annotation.NonNull;
    import io.flutter.embedding.android.FlutterActivity;
    import io.flutter.embedding.engine.FlutterEngine;
    import io.flutter.plugin.common.MethodCall;
    import io.flutter.plugin.common.MethodChannel;
    import io.flutter.plugins.GeneratedPluginRegistrant;
    
    public class MainActivity extends FlutterActivity {
      private static final String CHANNEL = "samples.flutter.io/platform_view";
      private static final String METHOD_SWITCH_VIEW = "switchView";
      private static final int COUNT_REQUEST = 1;
    
      private MethodChannel.Result result;
    
      @Override
      public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
        new MethodChannel(flutterEngine.getDartExecutor(), CHANNEL).setMethodCallHandler(
          new MethodChannel.MethodCallHandler() {
            @Override
            public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
              MainActivity.this.result = result;
              int count = methodCall.arguments();
              if (methodCall.method.equals(METHOD_SWITCH_VIEW)) {
                onLaunchFullScreen(count);
              } else {
                result.notImplemented();
              }
            }
          }
        );
      }
    
      private void onLaunchFullScreen(int count) {
        Intent fullScreenIntent = new Intent(this, CountActivity.class);
        fullScreenIntent.putExtra(CountActivity.EXTRA_COUNTER, count);
        startActivityForResult(fullScreenIntent, COUNT_REQUEST);
      }
    
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == COUNT_REQUEST) {
          if (resultCode == RESULT_OK) {
            result.success(data.getIntExtra(CountActivity.EXTRA_COUNTER, 0));
          } else {
            result.error("ACTIVITY_FAILURE", "Failed while launching activity", null);
          }
        }
      }
    }
  • 相关阅读:
    jenkins 项目部署方式二
    java 消息机制 ActiveMQ入门实例
    图片验证码大全
    Java列表分页查询结果导出到CSV文件,导入CSV文件并解析
    PHP之数组array
    JDK运行.Jar文件的控制台命令是什么
    ireport开发报表,Java和JSP端如何集成
    java Map及Map.Entry详解
    MFC
    Syms函数
  • 原文地址:https://www.cnblogs.com/Ocean123123/p/13948270.html
Copyright © 2020-2023  润新知