flutter_addtoapp_bridge 0.0.1-dev.4 copy "flutter_addtoapp_bridge: ^0.0.1-dev.4" to clipboard
flutter_addtoapp_bridge: ^0.0.1-dev.4 copied to clipboard

outdated

flutter addtoapp bridge for flutter call android/ios. so code in flutter page can open native page by this bridge.

flutter_addtoapp_bridge #

flutter addtoapp bridge for flutter call android/ios.

Usage(flutter call android/ios) #

flutter_addtoapp_bridge: ^0.0.1-dev.4

  • dart
class _MyAppState extends State<MyApp> {
  final _flutterAddtoappBridgePlugin = FlutterAddtoappBridge();

  Future<void> initPlatformState() async {
    try {
      dynamic result = await _flutterAddtoappBridgePlugin.open("toast", "Hi, I am from flutter!");
      if (kDebugMode) {
        print("putPlatformValue result=$result");
      }
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }
  }
}
  • ios(objectivec)

pod install

#import <flutter_addtoapp_bridge/FlutterAddtoappBridgePlugin.h>

// write code in application AppDelegate
[FlutterAddtoappBridgePlugin setOnGlobalMethodCall:^(UIViewController *topmostViewController, FlutterMethodCall *call, FlutterResult result) {
  NSLog(@"onCall topViewController=%@, method=%@, arguments=%@", topmostViewController, call.method, call.arguments);
  
  if([@"callPlatform" isEqualToString:call.method]){
      NSLog(@"onCall %@" ,[call.arguments class]);
      NSArray *argumentsWithFunctionNameArray = (NSArray *)call.arguments;
      NSString *functionName = [argumentsWithFunctionNameArray firstObject];
      if([@"getPlatformVersion" isEqualToString:functionName]){
          result([[UIDevice currentDevice] systemVersion]);
      }else if([@"open" isEqualToString:functionName]){
          NSArray *argumentsArray = (NSArray *)[argumentsWithFunctionNameArray objectAtIndex:1];
          NSString *url = [argumentsArray firstObject];
          NSLog(@"onCall open-> url==%@, arguments=%@", url, [argumentsArray objectAtIndex:1]);
          if([@"toast" isEqualToString:url]){
              [FlutterAddtoappBridgePlugin showToast:topmostViewController message:(NSString *)[argumentsArray objectAtIndex:1]];
              result(@"0");
          }else{
              result([NSString stringWithFormat:@"-2 %@ is not support", url]);
          }
      }else{
          result([NSString stringWithFormat:@"-1 %@ is not support", functionName]);
      }
      NSLog(@"onCall %lu" ,(unsigned long)[argumentsWithFunctionNameArray count]);
  }else{
      result(FlutterMethodNotImplemented);
  }
}];
  • android(kotlin)
import com.codesdancing.flutter.addtoapp.bridge.FlutterAddtoappBridgePlugin;

// write code in application
FlutterAddtoappBridgePlugin.setOnGlobalMethodCall(object : FlutterAddtoappBridgePlugin.OnGlobalMethodCall {
    override fun onCall(activity: Activity?, call: MethodCall, result: MethodChannel.Result) {
        Log.d("onCall", "activity=${activity?.hashCode()}, method=${call.method}, arguments=${call.arguments}")
        if (call.method == "callPlatform") {
            val argumentsWithFunctionNameArray = call.arguments as? ArrayList<*>
            when (val functionName = argumentsWithFunctionNameArray?.first()) {
                "getPlatformVersion" -> result.success(android.os.Build.VERSION.RELEASE)
                "open" -> {
                    val argumentsArray = argumentsWithFunctionNameArray.getOrNull(1) as? ArrayList<*>
                    Log.d("onCall", "open-> url=${argumentsArray?.getOrNull(0)}, arguments=${argumentsArray?.getOrNull(1) as? String ?: ""}}")
                    when (val url = argumentsArray?.getOrNull(0)) {
                        "toast" -> {
                            FlutterAddtoappBridgePlugin.showToast(activity, argumentsArray.getOrNull(1) as? String ?: "")
                            result.success("0")
                        }
                        else -> {
                            result.error("-2", "$url is not support", null)
                        }
                    }
                }
                else -> result.error("-1", "$functionName is not support", null)
            }
        } else {
            result.notImplemented()
        }
    }
})

shouldAttachEngineToActivity(true) // must be true, or flutter plugin activiy is null

import io.flutter.embedding.android.FlutterFragment;

public class XXActivity extends AppCompatActivity {
    private FlutterFragment flutterFragment = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.xxx);
       
        flutterFragment = FlutterFragment.withCachedEngine("my_engine_id")
                .shouldAttachEngineToActivity(true) // must be true, or flutter plugin activiy is null
                .build();
        FragmentPagerItemAdapter adapter = new FragmentPagerItemAdapter(
                getSupportFragmentManager(), FragmentPagerItems.with(this)
                .add(R.string.flutterHome, FlutterFragment.class)
                .add(R.string.xxx, XXXOtherFragment.class)
                .create()) {
            @NonNull
            @Override
            public Fragment getItem(int position) {
                if (position == 0) {
                    return flutterFragment;
                }
                return super.getItem(position);
            }
        };
    }

    @Override
    public void onPostResume() {
        super.onPostResume();
        if (flutterFragment != null) flutterFragment.onPostResume();
    }

    @Override
    protected void onNewIntent(@NonNull Intent intent) {
        if (flutterFragment != null) flutterFragment.onNewIntent(intent);
    }

    @Override
    public void onBackPressed() {
        if (flutterFragment != null) flutterFragment.onBackPressed();
    }

    @Override
    public void onRequestPermissionsResult(
            int requestCode,
            @NonNull String[] permissions,
            @NonNull int[] grantResults
    ) {
        if (flutterFragment != null) flutterFragment.onRequestPermissionsResult(
                requestCode,
                permissions,
                grantResults
        );
    }

    @Override
    public void onUserLeaveHint() {
        if (flutterFragment != null) flutterFragment.onUserLeaveHint();
    }

    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
        if (flutterFragment != null) flutterFragment.onTrimMemory(level);
    }
}

0
likes
0
pub points
0%
popularity

Publisher

verified publishercodesdancing.com

flutter addtoapp bridge for flutter call android/ios. so code in flutter page can open native page by this bridge.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_addtoapp_bridge