Author: Nafiz
-
Call swift native code from Flutter
In this tutorial, we are going to call a simple swift method of AppDelegate.swift file from flutter.
Let’s create a brand new flutter app by running the following command on your terminal
flutter create ios_native
Delete everything inside the method _incrementCounter() on your main.dart file and make it an async method.
Future<void> _incrementCounter() async { const MethodChannel _channel = const MethodChannel("FlutterFramework/swift_native"); final result = await _channel.invokeMethod('getSum'); print("result from iOS native + Swift ${result}"); }
Now open your Runner.xcworkspace on Xcode and open AppDelegate.swift
private func getSum() -> Int { return 2 + 2 }
Add the following code in the method didFinishLaunchingWithOptions and close the Xcode.
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController let channel = FlutterMethodChannel(name: "FlutterFramework/swift_native", binaryMessenger: controller.binaryMessenger) channel.setMethodCallHandler({ [weak self] (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in // This method is invoked on the UI thread. // Handle battery messages. guard call.method == "getSum" else { result(FlutterMethodNotImplemented) return } result(self?.getSum()) })
Now run the flutter app on the VSCode or Android Studio, if you click the floating button you will swift method returns 2 +2 = 4
-
How to change the status bar color in Flutter, Android only
Changing the status bar color is very easy in Flutter. There are a few ways to do this.
- Globally in the main function
import 'package:flutter/services.dart'; void main() { SystemChrome.setSystemUIOverlayStyle( SystemUiOverlayStyle( statusBarColor: Colors.red, ), ); runApp( MyApp() ); }
2. Globally in the MaterialApp widget in ThemeData
return MaterialApp( title: 'FlutterFramework', debugShowCheckedModeBanner: false, themeMode: ThemeMode.light, theme: ThemeData( primaryColor: Colors.red, appBarTheme: AppBarTheme( systemOverlayStyle: SystemUiOverlayStyle( statusBarColor: Colors.red, ), ), ), );
3. AppBar only
AppBar( systemOverlayStyle: SystemUiOverlayStyle( statusBarColor: Colors.red, ), )