Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift Compiler Error (Xcode): No such module 'shared_preferences_ios' - Flutter

Notes

  • Recently updated to Xcode Version 14.2 (14C18)
  • Flutter 3.7.0 • channel stable

Problem

When running my flutter app for ios, I get this error:

Xcode build done.                                           86.8s
Failed to build iOS app
Could not build the precompiled application for the device.
Swift Compiler Error (Xcode): No such module 'shared_preferences_ios'
/Users/tomasward/Desktop/fredi_new/ios/Runner/AppDelegate.swift:3:7

Which is derived from this piece of code in AppDelegate.swift:

import UIKit
import Flutter
import awesome_notifications
import shared_preferences_ios //error here

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
      
      if #available(iOS 10.0, *) {
           UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
          }
         
       application.registerForRemoteNotifications()
      

            SwiftAwesomeNotificationsPlugin.setPluginRegistrantCallback { registry in
                SwiftAwesomeNotificationsPlugin.register(
                  with: registry.registrar(forPlugin: "io.flutter.plugins.awesomenotifications.AwesomeNotificationsPlugin")!)
                FLTSharedPreferencesPlugin.register(
                  with: registry.registrar(forPlugin: "io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin")!)
            }
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

This code is boilerplate for the awesome_notifications plugin setup for ios. See here

I Have tried a million solutions

  • Deleting ios build and running flutter create .
  • Running pod install a million times, deleting podfile, etc.

No solution seems to be consistent. I am looking for a general solution from people working on Flutter projects, not native ios projects.

Also it would be great if someone who worked with awesome_notifications could give me some insight

like image 311
Tomas Ward Avatar asked Sep 21 '26 23:09

Tomas Ward


2 Answers

For Latest/Current Version do this below

replace shared_preferences_ios with shared_preferences_foundation

and FLTSharedPreferencesPlugin with SharedPreferencesPlugin

as these are the latest native bindings of flutter internal See PR.

AppDelegate.swift contents with new updated solution

import UIKit
import Flutter
import awesome_notifications
import shared_preferences_foundation //replace this here

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)

      if #available(iOS 10.0, *) {
          UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
      }

      application.registerForRemoteNotifications()

            SwiftAwesomeNotificationsPlugin.setPluginRegistrantCallback { registry in
                SwiftAwesomeNotificationsPlugin.register(
                  with: registry.registrar(forPlugin: "io.flutter.plugins.awesomenotifications.AwesomeNotificationsPlugin")!)
                SharedPreferencesPlugin.register( // replace here
                  with: registry.registrar(forPlugin: "io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin")!)
            }
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}
like image 177
msonowal Avatar answered Sep 25 '26 15:09

msonowal


As you're probably already aware by now, shared_preferences_ios went away with shared_preferences version 2.0.16. So the fact you're seeing that means something didn't get updated correctly along the way.

What version of Flutter were you on previously?

FWIW my AppDelegate.swift looks quite different, and notably does not include imports for specific plugins:

import UIKit
import Flutter

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

On the other hand, I'm not using awesome_notifications. Is it possible the setup for it has changed since you first integrated, and the AppDelegate.swift modifications are no longer relevant? And, you're on the latest version of awesome_notifications?

Sorry I don't have an immediate and direct answer, but I hope this helps.

like image 33
Chuck Batson Avatar answered Sep 25 '26 13:09

Chuck Batson



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!