Skip to main content

Flutter

With Web3Modal Flutter, you can easily let people interact with multiple EVM compatible wallets and blockchains.

Let's get started with the installation and configuration!

Installation​

    • Add web3modal_flutter as dependency in your /pubspec.yaml and run flutter pub get (check out the latest version)
    • Or simply run flutter pub add web3modal_flutter
    • Locate your /ios/Podfile file and add the following as the first line:
platform :ios, '13.0'
    • Run $ pod install inside /ios folder.
    • You should now be able to run your app with flutter run --dart-define=PROJECT_ID={your_project_id}

Enable Installed Wallet Detection​

To enable Web3Modal to detect wallets installed on the device, you need to make specific changes to the native sides of the project.

  1. Open your Info.plist file.
  2. Locate the <key>LSApplicationQueriesSchemes</key> section.
  3. Add the desired wallet schemes as string entries within the <array>. These schemes represent the wallets you want to detect.
  4. Refer to our Info.plist example file for a detailed illustration.

Example:

<key>LSApplicationQueriesSchemes</key>
<array>
<string>metamask</string>
<string>trust</string>
<string>safe</string>
<string>rainbow</string>
<!-- Add other wallet schemes names here -->
</array>

Enable Coinbase Wallet​

VERSION DEPENDENCY

Coinbase Wallet is available from web3modal_flutter: ^3.1.0 and higher.

Since Coinbase Wallet uses its own SDK, there are a few extra but simply steps to do if you are planning to include and support it.

  1. Open your Info.plist file.
  2. Locate the <key>LSApplicationQueriesSchemes</key> section.
  3. Include <string>cbwallet</string> scheme as mentioned above in previous section

Example:

<key>LSApplicationQueriesSchemes</key>
<array>
<string>cbwallet</string>
<!-- Any other scheme previously added -->
</array>
  1. Make sure pods are installed, otherwise run pod install inside your /ios folder.
  2. Open your /ios/Runner.xcworkspace file with Xcode and add the following code in AppDelegate.swift file:
import CoinbaseWalletSDK
override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if #available(iOS 13.0, *) {
if (CoinbaseWalletSDK.isConfigured == true) {
if (try? CoinbaseWalletSDK.shared.handleResponse(url)) == true {
return true
}
}
}

return super.application(app, open: url, options: options)
}

override func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if #available(iOS 13.0, *) {
if (CoinbaseWalletSDK.isConfigured == true) {
if let url = userActivity.webpageURL,
(try? CoinbaseWalletSDK.shared.handleResponse(url)) == true {
return true
}
}
}

return super.application(application, continue: userActivity, restorationHandler: restorationHandler)
}

Checkout out the AppDelegate.swift file from our sample dapp for reference.

Disable Coinbase Wallet​

Coinbase Wallet is enabled by default even if, in order to function properly, a few steps has to be done as described in the previous section. However, if you don't want to include/support Coinbase Wallet on your app you just need to pass Coinbase Wallet id fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa to excludedWalletIds options Array.