Updates & fixes

merge-requests/571/head
haroon amjad 3 years ago
parent eea701907d
commit 3107d1e86d

@ -120,7 +120,7 @@ dependencies {
implementation 'com.google.android.gms:play-services-basement:17.5.0' implementation 'com.google.android.gms:play-services-basement:17.5.0'
implementation "com.opentok.android:opentok-android-sdk:2.19.1" // implementation "com.opentok.android:opentok-android-sdk:2.19.1"
implementation 'com.facebook.stetho:stetho:1.5.1' implementation 'com.facebook.stetho:stetho:1.5.1'
implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1' implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1'

@ -18,7 +18,7 @@ class MainActivity: FlutterFragmentActivity() {
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON) WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)
PlatformBridge(flutterEngine, this).create() PlatformBridge(flutterEngine, this).create()
OpenTokPlatformBridge(flutterEngine, this).create() // OpenTokPlatformBridge(flutterEngine, this).create()
val time = timeToMillis("04:00:00", "HH:mm:ss") val time = timeToMillis("04:00:00", "HH:mm:ss")

@ -1,58 +1,58 @@
package com.ejada.hmg.opentok //package com.ejada.hmg.opentok
//
import android.content.Context //import android.content.Context
import android.util.AttributeSet //import android.util.AttributeSet
import android.view.LayoutInflater //import android.view.LayoutInflater
import android.view.View //import android.view.View
import android.widget.FrameLayout //import android.widget.FrameLayout
import android.widget.LinearLayout //import android.widget.LinearLayout
import com.ejada.hmg.R //import com.ejada.hmg.R
import io.flutter.plugin.common.StandardMessageCodec //import io.flutter.plugin.common.StandardMessageCodec
import io.flutter.plugin.platform.PlatformView //import io.flutter.plugin.platform.PlatformView
import io.flutter.plugin.platform.PlatformViewFactory //import io.flutter.plugin.platform.PlatformViewFactory
//
class LocalVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) { //class LocalVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) {
//
companion object { // companion object {
private lateinit var view: LocalVideoPlatformView // private lateinit var view: LocalVideoPlatformView
//
fun getViewInstance(context: Context): LocalVideoPlatformView { // fun getViewInstance(context: Context): LocalVideoPlatformView {
if(!this::view.isInitialized) { // if(!this::view.isInitialized) {
view = LocalVideoPlatformView(context) // view = LocalVideoPlatformView(context)
} // }
//
return view // return view
} // }
} // }
//
override fun create(context: Context, viewId: Int, args: Any?): PlatformView { // override fun create(context: Context, viewId: Int, args: Any?): PlatformView {
return getViewInstance(context) // return getViewInstance(context)
} // }
} //}
//
class LocalVideoPlatformView(context: Context) : PlatformView { //class LocalVideoPlatformView(context: Context) : PlatformView {
private val videoContainer: LocalVideoContainer = LocalVideoContainer(context) // private val videoContainer: LocalVideoContainer = LocalVideoContainer(context)
//
val container get() = videoContainer.publisherContainer // val container get() = videoContainer.publisherContainer
//
override fun getView(): View { // override fun getView(): View {
return videoContainer // return videoContainer
} // }
//
override fun dispose() {} // override fun dispose() {}
} //}
//
class LocalVideoContainer @JvmOverloads constructor( //class LocalVideoContainer @JvmOverloads constructor(
context: Context, // context: Context,
attrs: AttributeSet? = null, // attrs: AttributeSet? = null,
defStyle: Int = 0, // defStyle: Int = 0,
defStyleRes: Int = 0 // defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyle, defStyleRes) { //) : LinearLayout(context, attrs, defStyle, defStyleRes) {
//
var publisherContainer: FrameLayout private set // var publisherContainer: FrameLayout private set
//
init { // init {
val view = LayoutInflater.from(context).inflate(R.layout.local_video, this, true) // val view = LayoutInflater.from(context).inflate(R.layout.local_video, this, true)
publisherContainer = view.findViewById(R.id.publisher_container) // publisherContainer = view.findViewById(R.id.publisher_container)
} // }
} //}

@ -1,170 +1,170 @@
package com.ejada.hmg.opentok //package com.ejada.hmg.opentok
//
import android.content.Context //import android.content.Context
import android.os.Handler //import android.os.Handler
import android.os.Looper //import android.os.Looper
import android.util.Log //import android.util.Log
import android.view.ViewGroup //import android.view.ViewGroup
import com.facebook.stetho.urlconnection.StethoURLConnectionManager //import com.facebook.stetho.urlconnection.StethoURLConnectionManager
import com.opentok.android.* //import com.opentok.android.*
import io.flutter.embedding.engine.FlutterEngine //import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister //import io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister
import io.flutter.plugin.common.MethodCall //import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel //import io.flutter.plugin.common.MethodChannel
//
//
enum class OpenTokSDKState { //enum class OpenTokSDKState {
LOGGED_OUT, // LOGGED_OUT,
LOGGED_IN, // LOGGED_IN,
WAIT, // WAIT,
ERROR // ERROR
} //}
//
class OpenTok(private var context: Context, private var flutterEngine: FlutterEngine){ //class OpenTok(private var context: Context, private var flutterEngine: FlutterEngine){
private lateinit var remoteVideoPlatformView: RemoteVideoPlatformView // private lateinit var remoteVideoPlatformView: RemoteVideoPlatformView
private lateinit var localVideoPlatformView: LocalVideoPlatformView // private lateinit var localVideoPlatformView: LocalVideoPlatformView
//
init { // init {
remoteVideoPlatformView = RemoteVideoFactory.getViewInstance(context) // remoteVideoPlatformView = RemoteVideoFactory.getViewInstance(context)
flutterEngine // flutterEngine
.platformViewsController // .platformViewsController
.registry // .registry
.registerViewFactory("remote-video-container", RemoteVideoFactory()) // .registerViewFactory("remote-video-container", RemoteVideoFactory())
//
localVideoPlatformView = LocalVideoFactory.getViewInstance(context) // localVideoPlatformView = LocalVideoFactory.getViewInstance(context)
flutterEngine // flutterEngine
.platformViewsController // .platformViewsController
.registry // .registry
.registerViewFactory("local-video-container", LocalVideoFactory()) // .registerViewFactory("local-video-container", LocalVideoFactory())
} // }
//
private var session: Session? = null // private var session: Session? = null
private var publisher: Publisher? = null // private var publisher: Publisher? = null
private var subscriber: Subscriber? = null // private var subscriber: Subscriber? = null
//
//
//
private val sessionListener: Session.SessionListener = object: Session.SessionListener { // private val sessionListener: Session.SessionListener = object: Session.SessionListener {
override fun onConnected(session: Session) { // override fun onConnected(session: Session) {
// Connected to session // // Connected to session
Log.d("MainActivity", "Connected to session ${session.sessionId}") // Log.d("MainActivity", "Connected to session ${session.sessionId}")
//
publisher = Publisher.Builder(context).build().apply { // publisher = Publisher.Builder(context).build().apply {
setPublisherListener(publisherListener) // setPublisherListener(publisherListener)
renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL) // renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL)
//
view.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) // view.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
localVideoPlatformView.container.addView(view) // localVideoPlatformView.container.addView(view)
} // }
//
notifyFlutter(OpenTokSDKState.LOGGED_IN) // notifyFlutter(OpenTokSDKState.LOGGED_IN)
session.publish(publisher) // session.publish(publisher)
} // }
//
override fun onDisconnected(session: Session) { // override fun onDisconnected(session: Session) {
notifyFlutter(OpenTokSDKState.LOGGED_OUT) // notifyFlutter(OpenTokSDKState.LOGGED_OUT)
} // }
//
override fun onStreamReceived(session: Session, stream: Stream) { // override fun onStreamReceived(session: Session, stream: Stream) {
Log.d( // Log.d(
"MainActivity", // "MainActivity",
"onStreamReceived: New Stream Received " + stream.streamId + " in session: " + session.sessionId // "onStreamReceived: New Stream Received " + stream.streamId + " in session: " + session.sessionId
) // )
if (subscriber == null) { // if (subscriber == null) {
subscriber = Subscriber.Builder(context, stream).build().apply { // subscriber = Subscriber.Builder(context, stream).build().apply {
renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL) // renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL)
setSubscriberListener(subscriberListener) // setSubscriberListener(subscriberListener)
session.subscribe(this) // session.subscribe(this)
//
remoteVideoPlatformView.container.addView(view) // remoteVideoPlatformView.container.addView(view)
} // }
} // }
} // }
//
override fun onStreamDropped(session: Session, stream: Stream) { // override fun onStreamDropped(session: Session, stream: Stream) {
Log.d( // Log.d(
"MainActivity", // "MainActivity",
"onStreamDropped: Stream Dropped: " + stream.streamId + " in session: " + session.sessionId // "onStreamDropped: Stream Dropped: " + stream.streamId + " in session: " + session.sessionId
) // )
//
if (subscriber != null) { // if (subscriber != null) {
subscriber = null // subscriber = null
//
remoteVideoPlatformView.container.removeAllViews() // remoteVideoPlatformView.container.removeAllViews()
} // }
} // }
//
override fun onError(session: Session, opentokError: OpentokError) { // override fun onError(session: Session, opentokError: OpentokError) {
Log.d("MainActivity", "Session error: " + opentokError.message) // Log.d("MainActivity", "Session error: " + opentokError.message)
notifyFlutter(OpenTokSDKState.ERROR) // notifyFlutter(OpenTokSDKState.ERROR)
} // }
} // }
//
private val publisherListener: PublisherKit.PublisherListener = object : PublisherKit.PublisherListener { // private val publisherListener: PublisherKit.PublisherListener = object : PublisherKit.PublisherListener {
override fun onStreamCreated(publisherKit: PublisherKit, stream: Stream) { // override fun onStreamCreated(publisherKit: PublisherKit, stream: Stream) {
Log.d("MainActivity", "onStreamCreated: Publisher Stream Created. Own stream " + stream.streamId) // Log.d("MainActivity", "onStreamCreated: Publisher Stream Created. Own stream " + stream.streamId)
} // }
//
override fun onStreamDestroyed(publisherKit: PublisherKit, stream: Stream) { // override fun onStreamDestroyed(publisherKit: PublisherKit, stream: Stream) {
Log.d("MainActivity", "onStreamDestroyed: Publisher Stream Destroyed. Own stream " + stream.streamId) // Log.d("MainActivity", "onStreamDestroyed: Publisher Stream Destroyed. Own stream " + stream.streamId)
} // }
//
override fun onError(publisherKit: PublisherKit, opentokError: OpentokError) { // override fun onError(publisherKit: PublisherKit, opentokError: OpentokError) {
Log.d("MainActivity", "PublisherKit onError: " + opentokError.message) // Log.d("MainActivity", "PublisherKit onError: " + opentokError.message)
notifyFlutter(OpenTokSDKState.ERROR) // notifyFlutter(OpenTokSDKState.ERROR)
} // }
} // }
//
var subscriberListener: SubscriberKit.SubscriberListener = object : SubscriberKit.SubscriberListener { // var subscriberListener: SubscriberKit.SubscriberListener = object : SubscriberKit.SubscriberListener {
override fun onConnected(subscriberKit: SubscriberKit) { // override fun onConnected(subscriberKit: SubscriberKit) {
Log.d("MainActivity", "onConnected: Subscriber connected. Stream: " + subscriberKit.stream.streamId) // Log.d("MainActivity", "onConnected: Subscriber connected. Stream: " + subscriberKit.stream.streamId)
} // }
//
override fun onDisconnected(subscriberKit: SubscriberKit) { // override fun onDisconnected(subscriberKit: SubscriberKit) {
Log.d("MainActivity", "onDisconnected: Subscriber disconnected. Stream: " + subscriberKit.stream.streamId) // Log.d("MainActivity", "onDisconnected: Subscriber disconnected. Stream: " + subscriberKit.stream.streamId)
notifyFlutter(OpenTokSDKState.LOGGED_OUT) // notifyFlutter(OpenTokSDKState.LOGGED_OUT)
} // }
//
override fun onError(subscriberKit: SubscriberKit, opentokError: OpentokError) { // override fun onError(subscriberKit: SubscriberKit, opentokError: OpentokError) {
Log.d("MainActivity", "SubscriberKit onError: " + opentokError.message) // Log.d("MainActivity", "SubscriberKit onError: " + opentokError.message)
notifyFlutter(OpenTokSDKState.ERROR) // notifyFlutter(OpenTokSDKState.ERROR)
} // }
} // }
//
fun initSession(call: MethodCall, result: MethodChannel.Result) { // fun initSession(call: MethodCall, result: MethodChannel.Result) {
//
val apiKey = requireNotNull(call.argument<String>("apiKey")) // val apiKey = requireNotNull(call.argument<String>("apiKey"))
val sessionId = requireNotNull(call.argument<String>("sessionId")) // val sessionId = requireNotNull(call.argument<String>("sessionId"))
val token = requireNotNull(call.argument<String>("token")) // val token = requireNotNull(call.argument<String>("token"))
//
notifyFlutter(OpenTokSDKState.WAIT) // notifyFlutter(OpenTokSDKState.WAIT)
session = Session.Builder(context, apiKey, sessionId).build() // session = Session.Builder(context, apiKey, sessionId).build()
session?.setSessionListener(sessionListener) // session?.setSessionListener(sessionListener)
session?.connect(token) // session?.connect(token)
result.success("") // result.success("")
} // }
//
fun swapCamera(call: MethodCall, result: MethodChannel.Result) { // fun swapCamera(call: MethodCall, result: MethodChannel.Result) {
publisher?.cycleCamera() // publisher?.cycleCamera()
result.success("") // result.success("")
} // }
//
fun toggleAudio(call: MethodCall, result: MethodChannel.Result) { // fun toggleAudio(call: MethodCall, result: MethodChannel.Result) {
val publishAudio = requireNotNull(call.argument<Boolean>("publishAudio")) // val publishAudio = requireNotNull(call.argument<Boolean>("publishAudio"))
publisher?.publishAudio = publishAudio // publisher?.publishAudio = publishAudio
result.success("") // result.success("")
} // }
//
fun toggleVideo(call: MethodCall, result: MethodChannel.Result) { // fun toggleVideo(call: MethodCall, result: MethodChannel.Result) {
val publishVideo = requireNotNull(call.argument<Boolean>("publishVideo")) // val publishVideo = requireNotNull(call.argument<Boolean>("publishVideo"))
publisher?.publishVideo = publishVideo // publisher?.publishVideo = publishVideo
result.success("") // result.success("")
} // }
//
private fun notifyFlutter(state: OpenTokSDKState) { // private fun notifyFlutter(state: OpenTokSDKState) {
Handler(Looper.getMainLooper()).post { // Handler(Looper.getMainLooper()).post {
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "OpenTok-Platform-Bridge") // MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "OpenTok-Platform-Bridge")
.invokeMethod("updateState", state.toString()) // .invokeMethod("updateState", state.toString())
} // }
} // }
} //}

@ -1,58 +1,58 @@
package com.ejada.hmg.opentok //package com.ejada.hmg.opentok
//
import android.content.Context //import android.content.Context
import android.util.AttributeSet //import android.util.AttributeSet
import android.view.LayoutInflater //import android.view.LayoutInflater
import android.view.View //import android.view.View
import android.widget.FrameLayout //import android.widget.FrameLayout
import android.widget.LinearLayout //import android.widget.LinearLayout
import com.ejada.hmg.R //import com.ejada.hmg.R
import io.flutter.plugin.common.StandardMessageCodec //import io.flutter.plugin.common.StandardMessageCodec
import io.flutter.plugin.platform.PlatformView //import io.flutter.plugin.platform.PlatformView
import io.flutter.plugin.platform.PlatformViewFactory //import io.flutter.plugin.platform.PlatformViewFactory
//
class RemoteVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) { //class RemoteVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) {
//
companion object { // companion object {
private lateinit var view: RemoteVideoPlatformView // private lateinit var view: RemoteVideoPlatformView
//
fun getViewInstance(context: Context): RemoteVideoPlatformView { // fun getViewInstance(context: Context): RemoteVideoPlatformView {
if(!this::view.isInitialized) { // if(!this::view.isInitialized) {
view = RemoteVideoPlatformView(context) // view = RemoteVideoPlatformView(context)
} // }
//
return view // return view
} // }
} // }
//
override fun create(context: Context, viewId: Int, args: Any?): PlatformView { // override fun create(context: Context, viewId: Int, args: Any?): PlatformView {
return getViewInstance(context) // return getViewInstance(context)
} // }
} //}
//
class RemoteVideoPlatformView(context: Context) : PlatformView { //class RemoteVideoPlatformView(context: Context) : PlatformView {
private val videoContainer: RemoteVideoContainer = RemoteVideoContainer(context) // private val videoContainer: RemoteVideoContainer = RemoteVideoContainer(context)
//
val container get() = videoContainer.subscriberContainer // val container get() = videoContainer.subscriberContainer
//
override fun getView(): View { // override fun getView(): View {
return videoContainer // return videoContainer
} // }
//
override fun dispose() {} // override fun dispose() {}
} //}
//
class RemoteVideoContainer @JvmOverloads constructor( //class RemoteVideoContainer @JvmOverloads constructor(
context: Context, // context: Context,
attrs: AttributeSet? = null, // attrs: AttributeSet? = null,
defStyle: Int = 0, // defStyle: Int = 0,
defStyleRes: Int = 0 // defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyle, defStyleRes) { //) : LinearLayout(context, attrs, defStyle, defStyleRes) {
//
var subscriberContainer: FrameLayout private set // var subscriberContainer: FrameLayout private set
//
init { // init {
val view = LayoutInflater.from(context).inflate(R.layout.remote_video, this, true) // val view = LayoutInflater.from(context).inflate(R.layout.remote_video, this, true)
subscriberContainer = view.findViewById(R.id.subscriber_container) // subscriberContainer = view.findViewById(R.id.subscriber_container)
} // }
} //}

@ -1,42 +1,42 @@
package com.ejada.hmg.utils //package com.ejada.hmg.utils
//
import com.ejada.hmg.MainActivity //import com.ejada.hmg.MainActivity
import com.ejada.hmg.opentok.OpenTok //import com.ejada.hmg.opentok.OpenTok
import io.flutter.embedding.engine.FlutterEngine //import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall //import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel //import io.flutter.plugin.common.MethodChannel
//
class OpenTokPlatformBridge(private var flutterEngine: FlutterEngine, private var mainActivity: MainActivity) { //class OpenTokPlatformBridge(private var flutterEngine: FlutterEngine, private var mainActivity: MainActivity) {
//
private lateinit var channel: MethodChannel // private lateinit var channel: MethodChannel
private lateinit var openTok: OpenTok // private lateinit var openTok: OpenTok
//
companion object { // companion object {
private const val CHANNEL = "OpenTok-Platform-Bridge" // private const val CHANNEL = "OpenTok-Platform-Bridge"
} // }
//
fun create(){ // fun create(){
openTok = OpenTok(mainActivity, flutterEngine) // openTok = OpenTok(mainActivity, flutterEngine)
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL) // channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result -> // channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
when (call.method) { // when (call.method) {
"initSession" -> { // "initSession" -> {
openTok.initSession(call, result) // openTok.initSession(call, result)
} // }
"swapCamera" -> { // "swapCamera" -> {
openTok.swapCamera(call, result) // openTok.swapCamera(call, result)
} // }
"toggleAudio" -> { // "toggleAudio" -> {
openTok.toggleAudio(call, result) // openTok.toggleAudio(call, result)
} // }
"toggleVideo" -> { // "toggleVideo" -> {
openTok.toggleVideo(call, result) // openTok.toggleVideo(call, result)
} // }
else -> { // else -> {
result.notImplemented() // result.notImplemented()
} // }
} // }
} // }
} // }
//
} //}

@ -44,3 +44,9 @@ subprojects {
task clean(type: Delete) { task clean(type: Delete) {
delete rootProject.buildDir delete rootProject.buildDir
} }
configurations.all {
resolutionStrategy {
force 'androidx.core:core-ktx:1.6.0'
}
}

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project # Uncomment this line to define a global platform for your project
# platform :ios, '9.0' platform :ios, '13.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency. # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true' ENV['COCOAPODS_DISABLE_STATS'] = 'true'

@ -2,13 +2,20 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<!-- <key>com.apple.developer.networking.HotspotHelper</key>-->
<!-- <true/>-->
<key>aps-environment</key> <key>aps-environment</key>
<string>development</string> <string>development</string>
<key>com.apple.developer.healthkit</key>
<true/>
<key>com.apple.developer.healthkit.access</key>
<array/>
<key>com.apple.developer.networking.HotspotConfiguration</key> <key>com.apple.developer.networking.HotspotConfiguration</key>
<true/> <true/>
<key>com.apple.developer.networking.wifi-info</key> <key>com.apple.developer.networking.wifi-info</key>
<true/> <true/>
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>NDEF</string>
<string>TAG</string>
</array>
</dict> </dict>
</plist> </plist>

@ -468,12 +468,12 @@ class AuthProvider with ChangeNotifier {
Future<dynamic> getDashboard() async { Future<dynamic> getDashboard() async {
Map<String, dynamic> request = {}; Map<String, dynamic> request = {};
request['VersionID'] = VERSION_ID; // request['VersionID'] = VERSION_ID;
request['Channel'] = CHANNEL; // request['Channel'] = CHANNEL;
request['IPAdress'] = IP_ADDRESS; // request['IPAdress'] = IP_ADDRESS;
request['generalid'] = GENERAL_ID; // request['generalid'] = GENERAL_ID;
request['LanguageID'] = LANGUAGE_ID; // request['LanguageID'] = LANGUAGE_ID;
request['DeviceTypeID'] = DeviceTypeID; // request['DeviceTypeID'] = DeviceTypeID;
dynamic localRes; dynamic localRes;
try { try {

@ -40,11 +40,9 @@ class FamilyFilesProvider with ChangeNotifier {
dynamic localRes; dynamic localRes;
try { try {
var request = GetAllSharedRecordsByStatusReq(); var request = GetAllSharedRecordsByStatusReq();
var result = await sharedPref.getObject(MAIN_USER); // var result = await sharedPref.getObject(MAIN_USER);
request.status = 0; // request.status = 0;
// request.patientID = result["PatientID"];
request.patientID = result["PatientID"];
await new BaseAppClient().post(GET_SHARED_RECORD_BY_STATUS, onSuccess: (dynamic response, int statusCode) { await new BaseAppClient().post(GET_SHARED_RECORD_BY_STATUS, onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {

@ -49,19 +49,21 @@ class AppSharedPreferences {
setObject(String key, value) async { setObject(String key, value) async {
if (value != null) { if (value != null) {
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
return prefs.setString(key, json.encode(value)); return await prefs.setString(key, json.encode(value));
} }
} }
/// Get String [key] the key was saved /// Get String [key] the key was saved
getString(String key) async { getString(String key) async {
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
await prefs.reload();
return prefs.getString(key); return prefs.getString(key);
} }
/// Get String [key] the key was saved /// Get String [key] the key was saved
getStringWithDefaultValue(String key, String defaultVal) async { getStringWithDefaultValue(String key, String defaultVal) async {
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
await prefs.reload();
String value = prefs.getString(key); String value = prefs.getString(key);
return value == null ? defaultVal : value; return value == null ? defaultVal : value;
} }
@ -69,35 +71,45 @@ class AppSharedPreferences {
/// Get List of String [key] the key was saved /// Get List of String [key] the key was saved
getStringList(String key) async { getStringList(String key) async {
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
await prefs.reload();
return prefs.getStringList(key); return prefs.getStringList(key);
} }
/// Get Double [key] the key was saved /// Get Double [key] the key was saved
getDouble(String key) async { getDouble(String key) async {
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
await prefs.reload();
return prefs.getDouble(key); return prefs.getDouble(key);
} }
/// Get Bool [key] the key was saved /// Get Bool [key] the key was saved
getBool(String key) async { getBool(String key) async {
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
await prefs.reload();
return prefs.getBool(key); return prefs.getBool(key);
} }
/// Get Int [key] the key was saved /// Get Int [key] the key was saved
getInt(String key) async { getInt(String key) async {
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
await prefs.reload();
return prefs.getInt(key); return prefs.getInt(key);
} }
/// Get Object [key] the key was saved /// Get Object [key] the key was saved
Future getObject(String key) async { Future getObject(String key) async {
try {
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
await prefs.reload();
var string = prefs.getString(key); var string = prefs.getString(key);
if (string == null) { if (string == null) {
return null; return null;
} }
return json.decode(string); return json.decode(string);
} catch (ex) {
print(ex);
print(ex.toString());
}
} }
/// clear all saved values in shared preferences /// clear all saved values in shared preferences

@ -52,7 +52,7 @@ dependencies:
localstorage: ^4.0.0+1 localstorage: ^4.0.0+1
maps_launcher: ^2.0.1 maps_launcher: ^2.0.1
url_launcher: ^6.0.15 url_launcher: ^6.0.15
shared_preferences: ^2.0.9 shared_preferences: ^2.0.0
# flutter_flexible_toast: ^0.1.4 # flutter_flexible_toast: ^0.1.4
fluttertoast: ^8.0.8 fluttertoast: ^8.0.8
firebase_messaging: ^11.1.0 firebase_messaging: ^11.1.0
@ -198,6 +198,7 @@ dependency_overrides:
provider : ^5.0.0 provider : ^5.0.0
permission_handler : ^6.0.1+1 permission_handler : ^6.0.1+1
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter

Loading…
Cancel
Save