Merge branch 'dev_v2.8_withouth_null_ckecking' into 'development'

we fix some issues in pharmacies_items_request_model, refer-patient-screen and...

See merge request Cloud_Solution/doctor_app_flutter!942
merge-requests/943/merge
Elham Ali 4 years ago
commit 06855665b5

@ -6,7 +6,7 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.5.0' classpath 'com.android.tools.build:gradle:7.0.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.3' classpath 'com.google.gms:google-services:4.3.3'
} }
@ -17,7 +17,8 @@ allprojects {
google() google()
jcenter() jcenter()
mavenCentral() mavenCentral()
maven { url 'https://tokbox.bintray.com/maven' } maven { url 'https://developer.huawei.com/repo/' }
// maven { url 'https://tokbox.bintray.com/maven' }
} }
} }

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip

@ -10,83 +10,38 @@ project 'Runner', {
'Release' => :release, 'Release' => :release,
} }
def parse_KV_file(file, separator='=') def flutter_root
file_abs_path = File.expand_path(file) generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
if !File.exists? file_abs_path unless File.exist?(generated_xcode_build_settings_path)
return []; raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end end
generated_key_values = {}
skip_line_start_symbols = ["#", "/"] File.foreach(generated_xcode_build_settings_path) do |line|
File.foreach(file_abs_path) do |line| matches = line.match(/FLUTTER_ROOT\=(.*)/)
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } return matches[1].strip if matches
plugin = line.split(pattern=separator)
if plugin.length == 2
podname = plugin[0].strip()
path = plugin[1].strip()
podpath = File.expand_path("#{path}", file_abs_path)
generated_key_values[podname] = podpath
else
puts "Invalid plugin specification: #{line}"
end
end end
generated_key_values raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do target 'Runner' do
use_frameworks! use_frameworks!
use_modular_headers! use_modular_headers!
# Flutter Pod
copied_flutter_dir = File.join(__dir__, 'Flutter')
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
unless File.exist?(generated_xcode_build_settings_path)
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
unless File.exist?(copied_framework_path)
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
end
unless File.exist?(copied_podspec_path)
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
end
end
# Keep pod path relative so it can be checked into Podfile.lock. # Keep pod path relative so it can be checked into Podfile.lock.
pod 'Flutter', :path => 'Flutter' pod 'Flutter', :path => 'Flutter'
pod 'OpenTok' pod 'OpenTok'
pod 'Alamofire', '~> 5.2' pod 'Alamofire', '~> 5.2'
pod 'AADraggableView' pod 'AADraggableView'
# Plugin Pods # Plugin Pods
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
# referring to absolute paths on developers' machines.
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
plugin_pods = parse_KV_file('../.flutter-plugins')
plugin_pods.each do |name, path|
symlink = File.join('.symlinks', 'plugins', name)
File.symlink(path, symlink)
pod name, :path => File.join(symlink, 'ios')
end
end end
# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
install! 'cocoapods', :disable_input_output_paths => true
post_install do |installer| post_install do |installer|
installer.pods_project.targets.each do |target| installer.pods_project.targets.each do |target|
target.build_configurations.each do |config| flutter_additional_ios_build_settings(target)
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end end
end end

@ -3,7 +3,7 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 46; objectVersion = 50;
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
@ -14,13 +14,13 @@
30F70E6C266F56FD005D8F8E /* MainAppViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30F70E6B266F56FD005D8F8E /* MainAppViewController.swift */; }; 30F70E6C266F56FD005D8F8E /* MainAppViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30F70E6B266F56FD005D8F8E /* MainAppViewController.swift */; };
30F70E6F266F6509005D8F8E /* VideoCallRequestParameters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30F70E6E266F6509005D8F8E /* VideoCallRequestParameters.swift */; }; 30F70E6F266F6509005D8F8E /* VideoCallRequestParameters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30F70E6E266F6509005D8F8E /* VideoCallRequestParameters.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
3D7F2AC9B3EBF568D59B943B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 104DCFE405BA413255D4BDD9 /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
9CE61EBD24AB366E008D68DD /* VideoCallViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CE61EBC24AB366E008D68DD /* VideoCallViewController.swift */; }; 9CE61EBD24AB366E008D68DD /* VideoCallViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CE61EBC24AB366E008D68DD /* VideoCallViewController.swift */; };
9CE61ECD24ADBB4C008D68DD /* ICallProtocoll.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CE61ECC24ADBB4C008D68DD /* ICallProtocoll.swift */; }; 9CE61ECD24ADBB4C008D68DD /* ICallProtocoll.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CE61ECC24ADBB4C008D68DD /* ICallProtocoll.swift */; };
B650DC3076E9D70CB188286A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93A5F83B23AB032D1E096663 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
@ -37,10 +37,13 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
0762701A9540BA69842BCA9C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
104DCFE405BA413255D4BDD9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
29211CD725C165D600DD740D /* RunnerRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerRelease.entitlements; sourceTree = "<group>"; }; 29211CD725C165D600DD740D /* RunnerRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerRelease.entitlements; sourceTree = "<group>"; };
29211E4125C172B700DD740D /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; }; 29211E4125C172B700DD740D /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
2ADF20AFB51DAEC9BED1884D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
300790F9266FB14B0052174C /* VCEmbeder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VCEmbeder.swift; sourceTree = "<group>"; }; 300790F9266FB14B0052174C /* VCEmbeder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VCEmbeder.swift; sourceTree = "<group>"; };
300790FB26710CAB0052174C /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; }; 300790FB26710CAB0052174C /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
30F70E6B266F56FD005D8F8E /* MainAppViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainAppViewController.swift; sourceTree = "<group>"; }; 30F70E6B266F56FD005D8F8E /* MainAppViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainAppViewController.swift; sourceTree = "<group>"; };
@ -48,9 +51,7 @@
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
75DD06875D42C7903A76DF9F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
93A5F83B23AB032D1E096663 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -60,8 +61,7 @@
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9CE61EBC24AB366E008D68DD /* VideoCallViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoCallViewController.swift; sourceTree = "<group>"; }; 9CE61EBC24AB366E008D68DD /* VideoCallViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoCallViewController.swift; sourceTree = "<group>"; };
9CE61ECC24ADBB4C008D68DD /* ICallProtocoll.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICallProtocoll.swift; sourceTree = "<group>"; }; 9CE61ECC24ADBB4C008D68DD /* ICallProtocoll.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICallProtocoll.swift; sourceTree = "<group>"; };
9D4B7DB43C6A6C849D2387CE /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; }; E5CA53445955DBB6BB6D164C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
E698D7B14B12DF768FE47A1A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -69,7 +69,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
B650DC3076E9D70CB188286A /* Pods_Runner.framework in Frameworks */, 3D7F2AC9B3EBF568D59B943B /* Pods_Runner.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -104,9 +104,9 @@
7D66D387293CE5376A07EC5F /* Pods */ = { 7D66D387293CE5376A07EC5F /* Pods */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E698D7B14B12DF768FE47A1A /* Pods-Runner.debug.xcconfig */, 2ADF20AFB51DAEC9BED1884D /* Pods-Runner.debug.xcconfig */,
75DD06875D42C7903A76DF9F /* Pods-Runner.release.xcconfig */, E5CA53445955DBB6BB6D164C /* Pods-Runner.release.xcconfig */,
9D4B7DB43C6A6C849D2387CE /* Pods-Runner.profile.xcconfig */, 0762701A9540BA69842BCA9C /* Pods-Runner.profile.xcconfig */,
); );
path = Pods; path = Pods;
sourceTree = "<group>"; sourceTree = "<group>";
@ -129,7 +129,7 @@
97C146F01CF9000F007C117D /* Runner */, 97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */, 97C146EF1CF9000F007C117D /* Products */,
7D66D387293CE5376A07EC5F /* Pods */, 7D66D387293CE5376A07EC5F /* Pods */,
F984EB986238F1809678CD84 /* Frameworks */, C1938275850F66EAA5D7AC0F /* Frameworks */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
@ -171,10 +171,10 @@
name = "Supporting Files"; name = "Supporting Files";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
F984EB986238F1809678CD84 /* Frameworks */ = { C1938275850F66EAA5D7AC0F /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
93A5F83B23AB032D1E096663 /* Pods_Runner.framework */, 104DCFE405BA413255D4BDD9 /* Pods_Runner.framework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
@ -186,14 +186,14 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = ( buildPhases = (
986D76F6694E0D6D8C5CDAAB /* [CP] Check Pods Manifest.lock */, C79BE4619064E868C0DFBD12 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */, 9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */, 97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */, 97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */, 97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */, 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
08568E6EE9BA48E55B7C3865 /* [CP] Embed Pods Frameworks */, 3DBDEDAE0EB70F8613EE7963 /* [CP] Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@ -210,7 +210,7 @@
97C146E61CF9000F007C117D /* Project object */ = { 97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 1020; LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "The Chromium Authors"; ORGANIZATIONNAME = "The Chromium Authors";
TargetAttributes = { TargetAttributes = {
97C146ED1CF9000F007C117D = { 97C146ED1CF9000F007C117D = {
@ -253,34 +253,113 @@
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
08568E6EE9BA48E55B7C3865 /* [CP] Embed Pods Frameworks */ = { 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
inputPaths = ( inputPaths = (
); );
name = "[CP] Embed Pods Frameworks"; name = "Thin Binary";
outputPaths = ( outputPaths = (
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
showEnvVarsInLog = 0;
}; };
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 3DBDEDAE0EB70F8613EE7963 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
inputPaths = ( inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/AADraggableView/AADraggableView.framework",
"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
"${BUILT_PRODUCTS_DIR}/DKImagePickerController/DKImagePickerController.framework",
"${BUILT_PRODUCTS_DIR}/DKPhotoGallery/DKPhotoGallery.framework",
"${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseCore/FirebaseCore.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseInstallations/FirebaseInstallations.framework",
"${BUILT_PRODUCTS_DIR}/FirebaseMessaging/FirebaseMessaging.framework",
"${BUILT_PRODUCTS_DIR}/GoogleDataTransport/GoogleDataTransport.framework",
"${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework",
"${BUILT_PRODUCTS_DIR}/MTBBarcodeScanner/MTBBarcodeScanner.framework",
"${BUILT_PRODUCTS_DIR}/OrderedSet/OrderedSet.framework",
"${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework",
"${BUILT_PRODUCTS_DIR}/Reachability/Reachability.framework",
"${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
"${BUILT_PRODUCTS_DIR}/SwiftProtobuf/SwiftProtobuf.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyGif/SwiftyGif.framework",
"${BUILT_PRODUCTS_DIR}/Toast/Toast.framework",
"${BUILT_PRODUCTS_DIR}/Try/Try.framework",
"${BUILT_PRODUCTS_DIR}/barcode_scan2/barcode_scan2.framework",
"${BUILT_PRODUCTS_DIR}/connectivity/connectivity.framework",
"${BUILT_PRODUCTS_DIR}/device_info/device_info.framework",
"${BUILT_PRODUCTS_DIR}/file_picker/file_picker.framework",
"${BUILT_PRODUCTS_DIR}/flutter_inappwebview/flutter_inappwebview.framework",
"${BUILT_PRODUCTS_DIR}/flutter_keyboard_visibility/flutter_keyboard_visibility.framework",
"${BUILT_PRODUCTS_DIR}/fluttertoast/fluttertoast.framework",
"${BUILT_PRODUCTS_DIR}/hexcolor/hexcolor.framework",
"${BUILT_PRODUCTS_DIR}/local_auth/local_auth.framework",
"${BUILT_PRODUCTS_DIR}/maps_launcher/maps_launcher.framework",
"${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework",
"${BUILT_PRODUCTS_DIR}/path_provider_ios/path_provider_ios.framework",
"${BUILT_PRODUCTS_DIR}/shared_preferences_ios/shared_preferences_ios.framework",
"${BUILT_PRODUCTS_DIR}/speech_to_text/speech_to_text.framework",
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
"${BUILT_PRODUCTS_DIR}/url_launcher_ios/url_launcher_ios.framework",
"${BUILT_PRODUCTS_DIR}/video_player/video_player.framework",
"${BUILT_PRODUCTS_DIR}/wakelock/wakelock.framework",
"${BUILT_PRODUCTS_DIR}/webview_flutter_wkwebview/webview_flutter_wkwebview.framework",
); );
name = "Thin Binary"; name = "[CP] Embed Pods Frameworks";
outputPaths = ( outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AADraggableView.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKImagePickerController.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKPhotoGallery.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCore.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreDiagnostics.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseInstallations.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseMessaging.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleDataTransport.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MTBBarcodeScanner.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OrderedSet.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftProtobuf.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyGif.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Try.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/barcode_scan2.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/connectivity.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_picker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_inappwebview.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_keyboard_visibility.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/fluttertoast.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hexcolor.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/local_auth.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/maps_launcher.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_ios.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_ios.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/speech_to_text.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_ios.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/video_player.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/wakelock.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/webview_flutter_wkwebview.framework",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
}; };
9740EEB61CF901F6004384FC /* Run Script */ = { 9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
@ -296,7 +375,7 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
}; };
986D76F6694E0D6D8C5CDAAB /* [CP] Check Pods Manifest.lock */ = { C79BE4619064E868C0DFBD12 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
@ -423,7 +502,10 @@
); );
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
@ -558,7 +640,10 @@
); );
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
@ -589,7 +674,10 @@
); );
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",

@ -2,6 +2,6 @@
<Workspace <Workspace
version = "1.0"> version = "1.0">
<FileRef <FileRef
location = "group:Runner.xcodeproj"> location = "self:">
</FileRef> </FileRef>
</Workspace> </Workspace>

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1310" LastUpgradeVersion = "1300"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

@ -1,3 +1,5 @@
// @dart=2.9
import 'dart:io' show Platform; import 'dart:io' show Platform;
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';

@ -1,3 +1,5 @@
//@dart=2.9
import 'dart:convert'; import 'dart:convert';
import 'dart:io' show Platform; import 'dart:io' show Platform;
@ -107,12 +109,8 @@ class BaseAppClient {
var asd = json.encode(body); var asd = json.encode(body);
var asd2; var asd2;
if (await Helpers.checkConnection()) { if (await Helpers.checkConnection()) {
final response = await http.post(url, final response = await http.post(Uri.parse(url),
body: json.encode(body), body: json.encode(body), headers: {'Content-Type': 'application/json', 'Accept': 'application/json'});
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
});
final int statusCode = response.statusCode; final int statusCode = response.statusCode;
if (statusCode < 200 || statusCode >= 400) { if (statusCode < 200 || statusCode >= 400) {
onFailure(Helpers.generateContactAdminMsg(), statusCode); onFailure(Helpers.generateContactAdminMsg(), statusCode);
@ -236,8 +234,7 @@ class BaseAppClient {
var asd = json.encode(body); var asd = json.encode(body);
var asd2; var asd2;
if (await Helpers.checkConnection()) { if (await Helpers.checkConnection()) {
final response = await http.post(url.trim(), final response = await http.post(Uri.parse(url.trim()), body: json.encode(body), headers: headers);
body: json.encode(body), headers: headers);
final int statusCode = response.statusCode; final int statusCode = response.statusCode;
print("statusCode :$statusCode"); print("statusCode :$statusCode");
if (statusCode < 200 || statusCode >= 400 || json == null) { if (statusCode < 200 || statusCode >= 400 || json == null) {

@ -56,7 +56,7 @@ const Map<String, Map<String, String>> localizedValues = {
"myInPatient": {"en": "My\n In Patients", "ar": "مرضاي\nالمنومين"}, "myInPatient": {"en": "My\n In Patients", "ar": "مرضاي\nالمنومين"},
"myInPatientTitle": {"en": "My Patients", "ar": "مرضاي المنومين"}, "myInPatientTitle": {"en": "My Patients", "ar": "مرضاي المنومين"},
"inPatientLabel": {"en": "InPatients", "ar": "المريض المنوم"}, "inPatientLabel": {"en": "InPatients", "ar": "المريض المنوم"},
"inPatientAll": {"en": "All Patients", "ar": "جميع المرضى المنومين"}, "inPatientAll": {"en": "All Patients", "ar": "المرضى المنومين"},
"operations": {"en": "Operations", "ar": "عمليات"}, "operations": {"en": "Operations", "ar": "عمليات"},
"patientServices": {"en": "Patient Services", "ar": "خدمات المرضى"}, "patientServices": {"en": "Patient Services", "ar": "خدمات المرضى"},
"searchMedicineDashboard": { "searchMedicineDashboard": {
@ -708,7 +708,7 @@ const Map<String, Map<String, String>> localizedValues = {
"icd": {"en": "ICD", "ar": "التصنيف الدولي للأمراض"}, "icd": {"en": "ICD", "ar": "التصنيف الدولي للأمراض"},
"days": {"en": "Days", "ar": "أيام"}, "days": {"en": "Days", "ar": "أيام"},
"months": {"en": "Months", "ar": "أشهر"}, "months": {"en": "Months", "ar": "أشهر"},
"years": {"en": "Years", "ar": "سنوات"}, "years": {"en": "Years", "ar": "سنة"},
"hr": {"en": "Hr", "ar": "س"}, "hr": {"en": "Hr", "ar": "س"},
"min": {"en": "Min", "ar": "د"}, "min": {"en": "Min", "ar": "د"},
"appointmentNumber": {"en": "Appointment Number", "ar": "رقم الموعد"}, "appointmentNumber": {"en": "Appointment Number", "ar": "رقم الموعد"},

@ -64,8 +64,8 @@ class AuthenticationViewModel extends BaseViewModel {
UserModel userInfo = UserModel(); UserModel userInfo = UserModel();
final LocalAuthentication auth = LocalAuthentication(); final LocalAuthentication auth = LocalAuthentication();
List<BiometricType> _availableBiometrics; List<BiometricType> _availableBiometrics;
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
bool isLogin = false; bool isLogin = false;
bool unverified = false; bool unverified = false;
@ -354,7 +354,7 @@ class AuthenticationViewModel extends BaseViewModel {
getDeviceInfoFromFirebase() async { getDeviceInfoFromFirebase() async {
_firebaseMessaging.setAutoInitEnabled(true); _firebaseMessaging.setAutoInitEnabled(true);
if (Platform.isIOS) { if (Platform.isIOS) {
_firebaseMessaging.requestNotificationPermissions(); _firebaseMessaging.requestPermission();
} }
setState(ViewState.Busy); setState(ViewState.Busy);
var token = await _firebaseMessaging.getToken(); var token = await _firebaseMessaging.getToken();

@ -13,7 +13,7 @@ import 'base_view_model.dart';
class DashboardViewModel extends BaseViewModel { class DashboardViewModel extends BaseViewModel {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
DashboardService _dashboardService = locator<DashboardService>(); DashboardService _dashboardService = locator<DashboardService>();
SpecialClinicsService _specialClinicsService = SpecialClinicsService _specialClinicsService =
locator<SpecialClinicsService>(); locator<SpecialClinicsService>();
@ -53,13 +53,7 @@ class DashboardViewModel extends BaseViewModel {
} }
Future setFirebaseNotification(AuthenticationViewModel authProvider) async { Future setFirebaseNotification(AuthenticationViewModel authProvider) async {
_firebaseMessaging.requestNotificationPermissions( _firebaseMessaging.requestPermission(sound: true, badge: true, alert: true, provisional: true);
const IosNotificationSettings(
sound: true, badge: true, alert: true, provisional: true));
_firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings settings) {
print("Settings registered: $settings");
});
_firebaseMessaging.getToken().then((String token) async { _firebaseMessaging.getToken().then((String token) async {
if (token != '') { if (token != '') {

@ -1,3 +1,5 @@
//@dart=2.9
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_reply_screen.dart'; import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_reply_screen.dart';
import 'package:doctor_app_flutter/screens/doctor/my_schedule_screen.dart'; import 'package:doctor_app_flutter/screens/doctor/my_schedule_screen.dart';

@ -1,3 +1,5 @@
import 'package:doctor_app_flutter/core/provider/robot_provider.dart'; import 'package:doctor_app_flutter/core/provider/robot_provider.dart';
import 'package:doctor_app_flutter/core/viewModel/livecare_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/livecare_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';

@ -59,6 +59,8 @@ class PharmaciesItemsRequestModel {
data['SessionID'] = this.sessionID; data['SessionID'] = this.sessionID;
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend; data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
data['DeviceTypeID'] = this.deviceTypeID; data['DeviceTypeID'] = this.deviceTypeID;
//TODO Elham* fix it later
data['VersionID'] = 40;
return data; return data;
} }
} }

@ -167,93 +167,95 @@ class PatientSickLeaveScreen extends StatelessWidget {
SizedBox( SizedBox(
width: 10, width: 10,
), ),
Column( Expanded(
children: [ child: Column(
CustomRow( children: [
label: TranslationBase.of( CustomRow(
context) label: TranslationBase.of(
.daysSickleave , context)
labelSize: SizeConfig .daysSickleave ,
.getTextMultiplierBasedOnWidth() * labelSize: SizeConfig
3.3, .getTextMultiplierBasedOnWidth() *
valueSize: SizeConfig 3.3,
.getTextMultiplierBasedOnWidth() * valueSize: SizeConfig
4, .getTextMultiplierBasedOnWidth() *
value: (item.sickLeaveDays 4,
.toString() != value: (item.sickLeaveDays
null && .toString() !=
item.sickLeaveDays null &&
.toString() != item.sickLeaveDays
"null") .toString() !=
? item.sickLeaveDays "null")
.toString() ? item.sickLeaveDays
: item.noOfDays .toString()
.toString(), : item.noOfDays
), .toString(),
CustomRow(
label: TranslationBase.of(
context)
.startDate +
' ' ??
"",
labelSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
3.3,
valueSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
4,
value: AppDateUtils
.getDayMonthYearDateFormatted(
item.startDate.contains(
"/Date(")
? AppDateUtils
.convertStringToDate(
item
.startDate)
: DateTime.parse(
item.startDate),
), ),
), CustomRow(
CustomRow( label: TranslationBase.of(
label: TranslationBase.of( context)
context) .startDate +
.endDate + ' ' ??
' ' ?? "",
"", labelSize: SizeConfig
labelSize: SizeConfig .getTextMultiplierBasedOnWidth() *
.getTextMultiplierBasedOnWidth() * 3.3,
3.3, valueSize: SizeConfig
valueSize: SizeConfig .getTextMultiplierBasedOnWidth() *
.getTextMultiplierBasedOnWidth() * 4,
4, value: AppDateUtils
value: AppDateUtils .getDayMonthYearDateFormatted(
.getDayMonthYearDateFormatted( item.startDate.contains(
item.startDate.contains( "/Date(")
"/Date(") ? AppDateUtils
? AppDateUtils .convertStringToDate(
.convertStringToDate( item
item.endDate ?? .startDate)
"") : DateTime.parse(
.add( item.startDate),
Duration( ),
days: item
.noOfDays ??
item.sickLeaveDays),
)
: DateTime.parse(
item.startDate ??
"")
.add(
Duration(
days:
item.noOfDays ??
""),
),
), ),
), CustomRow(
], label: TranslationBase.of(
crossAxisAlignment: context)
CrossAxisAlignment.start, .endDate +
' ' ??
"",
labelSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
3.3,
valueSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
4,
value: AppDateUtils
.getDayMonthYearDateFormatted(
item.startDate.contains(
"/Date(")
? AppDateUtils
.convertStringToDate(
item.endDate ??
"")
.add(
Duration(
days: item
.noOfDays ??
item.sickLeaveDays),
)
: DateTime.parse(
item.startDate ??
"")
.add(
Duration(
days:
item.noOfDays ??
""),
),
),
),
],
crossAxisAlignment:
CrossAxisAlignment.start,
),
), ),
], ],
), ),

@ -84,6 +84,7 @@ class _OutPatientsScreenState extends State<OutPatientsScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
authenticationViewModel = Provider.of(context); authenticationViewModel = Provider.of(context);
projectsProvider = Provider.of(context);
_times = [ _times = [
TranslationBase.of(context).previous, TranslationBase.of(context).previous,
TranslationBase.of(context).today, TranslationBase.of(context).today,
@ -99,7 +100,7 @@ class _OutPatientsScreenState extends State<OutPatientsScreen> {
appBarTitle: "Search Patient", appBarTitle: "Search Patient",
isShowAppBar: true, isShowAppBar: true,
appBar: PatientSearchHeader( appBar: PatientSearchHeader(
title: "My Out patient", title: TranslationBase.of(context).myOutPatient,
), ),
baseViewModel: model, baseViewModel: model,
body: Column( body: Column(

@ -177,7 +177,7 @@ class _UCAFPagerScreenState extends State<UCAFPagerScreen>
borderColor: Colors.white, borderColor: Colors.white,
color: Colors.white, color: Colors.white,
fontColor: Color(0xFFB8382B), fontColor: Color(0xFFB8382B),
fontSize: 2.2,
onPressed: () { onPressed: () {
Navigator.of(context).popUntil((route) { Navigator.of(context).popUntil((route) {
return route.settings.name == PATIENTS_PROFILE; return route.settings.name == PATIENTS_PROFILE;
@ -199,7 +199,7 @@ class _UCAFPagerScreenState extends State<UCAFPagerScreen>
borderColor: Color(0xFFB8382B), borderColor: Color(0xFFB8382B),
color: AppGlobal.appRedColor, color: AppGlobal.appRedColor,
fontColor: Colors.white, fontColor: Colors.white,
fontSize: 2.0,
onPressed: () { onPressed: () {
model.saveUCAFOnTap(); model.saveUCAFOnTap();
}, },

@ -93,10 +93,10 @@ class LineChartForDiabetic extends StatelessWidget {
titlesData: FlTitlesData( titlesData: FlTitlesData(
bottomTitles: SideTitles( bottomTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 10, fontSize: 10,
), );},
rotateAngle: -65, rotateAngle: -65,
//rotateAngle:-65, //rotateAngle:-65,
interval: 100, interval: 100,
@ -121,11 +121,10 @@ class LineChartForDiabetic extends StatelessWidget {
), ),
leftTitles: SideTitles( leftTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 10, fontSize: 10,
), );},
interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200, interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200,
margin: 12, margin: 12,

@ -97,10 +97,10 @@ class LineChartCurvedState extends State<LineChartCurved> {
titlesData: FlTitlesData( titlesData: FlTitlesData(
bottomTitles: SideTitles( bottomTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 11, fontSize: 10,
), );},
margin: 28, margin: 28,
rotateAngle:-65, rotateAngle:-65,
getTitles: (value) { getTitles: (value) {
@ -128,11 +128,10 @@ class LineChartCurvedState extends State<LineChartCurved> {
), ),
leftTitles: SideTitles( leftTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 10, fontSize: 10,
), );},
getTitles: (value) { getTitles: (value) {
return '${value.toInt()}'; return '${value.toInt()}';
}, },

@ -98,10 +98,10 @@ class LineChartCurvedLabHistoryState extends State<LineChartCurvedLabHistory> {
titlesData: FlTitlesData( titlesData: FlTitlesData(
bottomTitles: SideTitles( bottomTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 11, fontSize: 10,
), );},
margin: 28, margin: 28,
rotateAngle: -65, rotateAngle: -65,
getTitles: (value) { getTitles: (value) {
@ -127,11 +127,10 @@ class LineChartCurvedLabHistoryState extends State<LineChartCurvedLabHistory> {
), ),
leftTitles: SideTitles( leftTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 10, fontSize: 10,
), );},
getTitles: (value) { getTitles: (value) {
return '${value.toInt()}'; return '${value.toInt()}';
}, },

@ -38,6 +38,7 @@ class AddVerifyMedicalReport extends StatefulWidget {
} }
class _AddVerifyMedicalReportState extends State<AddVerifyMedicalReport> { class _AddVerifyMedicalReportState extends State<AddVerifyMedicalReport> {
HtmlEditorController _controller = HtmlEditorController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
String txtOfMedicalReport; String txtOfMedicalReport;
@ -73,6 +74,7 @@ class _AddVerifyMedicalReportState extends State<AddVerifyMedicalReport> {
: widget.model.medicalReportTemplate[0].templateText.length > 0 : widget.model.medicalReportTemplate[0].templateText.length > 0
? widget.model.medicalReportTemplate[0].templateText ? widget.model.medicalReportTemplate[0].templateText
: ""), : ""),
controller: _controller,
hint: "Write the medical report ", hint: "Write the medical report ",
height: MediaQuery.of(context).size.height * 0.75, height: MediaQuery.of(context).size.height * 0.75,
), ),
@ -100,7 +102,7 @@ class _AddVerifyMedicalReportState extends State<AddVerifyMedicalReport> {
// disabled: progressNoteController.text.isEmpty, // disabled: progressNoteController.text.isEmpty,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
onPressed: () async { onPressed: () async {
txtOfMedicalReport = await HtmlEditor.getText(); txtOfMedicalReport = await _controller.getText();
if (txtOfMedicalReport.isNotEmpty) { if (txtOfMedicalReport.isNotEmpty) {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
@ -137,7 +139,7 @@ class _AddVerifyMedicalReportState extends State<AddVerifyMedicalReport> {
color: Color(0xff359846), color: Color(0xff359846),
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
onPressed: () async { onPressed: () async {
txtOfMedicalReport = await HtmlEditor.getText(); txtOfMedicalReport = await _controller.getText();
if (txtOfMedicalReport.isNotEmpty) { if (txtOfMedicalReport.isNotEmpty) {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await widget.model.verifyMedicalReport(widget.patient, widget.medicalReport); await widget.model.verifyMedicalReport(widget.patient, widget.medicalReport);

@ -22,6 +22,7 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart'; import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@ -92,8 +93,9 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
), ),
body: model.patientProgressNoteList == null || body: model.patientProgressNoteList == null ||
model.patientProgressNoteList.length == 0 model.patientProgressNoteList.length == 0
? DrAppEmbeddedError( ? widget.visitType == 3
error: TranslationBase.of(context).errorNoProgressNote) ? ErrorMessage(error: TranslationBase.of(context).errorNoOrders,)
: ErrorMessage(error: TranslationBase.of(context).errorNoProgressNote,)
: Container( : Container(
color: Colors.grey[200], color: Colors.grey[200],
child: Column( child: Column(

@ -374,7 +374,6 @@ class MyReferralDetailScreen extends StatelessWidget {
title: TranslationBase.of(context).accept, title: TranslationBase.of(context).accept,
color: Color(0xFF4BA821), color: Color(0xFF4BA821),
fontColor: Colors.white, fontColor: Colors.white,
fontSize: 1.6,
hPadding: 8, hPadding: 8,
vPadding: 12, vPadding: 12,
disabled: model.state == ViewState.Busy, disabled: model.state == ViewState.Busy,
@ -401,7 +400,7 @@ class MyReferralDetailScreen extends StatelessWidget {
title: TranslationBase.of(context).reject, title: TranslationBase.of(context).reject,
color: AppGlobal.appRedColor, color: AppGlobal.appRedColor,
fontColor: Colors.white, fontColor: Colors.white,
fontSize: 1.6,
hPadding: 8, hPadding: 8,
vPadding: 12, vPadding: 12,
disabled: model.state == ViewState.Busy, disabled: model.state == ViewState.Busy,

@ -261,8 +261,7 @@ class _PatientMakeInPatientReferralScreenState
attributeName: 'facilityName', attributeName: 'facilityName',
attributeValueId: 'facilityId', attributeValueId: 'facilityId',
okText: TranslationBase.of(context).ok, okText: TranslationBase.of(context).ok,
okFunction: (selectedValue) { okFunction: (selectedValue) async {
setState(() async {
_selectedBranch = selectedValue; _selectedBranch = selectedValue;
_selectedClinic = null; _selectedClinic = null;
_selectedDoctor = null; _selectedDoctor = null;
@ -278,7 +277,6 @@ class _PatientMakeInPatientReferralScreenState
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
model.error); model.error);
} }
});
}, },
); );
showDialog( showDialog(
@ -316,8 +314,8 @@ class _PatientMakeInPatientReferralScreenState
TranslationBase.of(context) TranslationBase.of(context)
.clinicSearch, .clinicSearch,
okText: TranslationBase.of(context).ok, okText: TranslationBase.of(context).ok,
okFunction: (selectedValue) { okFunction: (selectedValue) async {
setState(() async {
_selectedDoctor = null; _selectedDoctor = null;
_selectedClinic = selectedValue; _selectedClinic = selectedValue;
GifLoaderDialogUtils.showMyDialog( GifLoaderDialogUtils.showMyDialog(
@ -334,7 +332,7 @@ class _PatientMakeInPatientReferralScreenState
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
model.error); model.error);
} }
});
}, },
); );
showDialog( showDialog(

@ -123,16 +123,17 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
model.patientReferral.length - 1] model.patientReferral.length - 1]
.patientDetails .patientDetails
.gender, .gender,
referredDate: model ///TODO Elham* check this
.patientReferral[ // referredDate: model
model.patientReferral.length - 1] // .patientReferral[
.referredOn // model.patientReferral.length - 1]
.split(" ")[0], // .referredOn
referredTime: model // .split(" ")[0],
.patientReferral[ // referredTime: model
model.patientReferral.length - 1] // .patientReferral[
.referredOn // model.patientReferral.length - 1]
.split(" ")[1], // .referredOn
// .split(" ")[1],
patientID: patientID:
"${model.patientReferral[model.patientReferral.length - 1].patientID}", "${model.patientReferral[model.patientReferral.length - 1].patientID}",
isSameBranch: model isSameBranch: model
@ -173,7 +174,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
color: HexColor("#359846"), color: HexColor("#359846"),
onPressed: () async { onPressed: () async {
setState(() async {
await locator<AnalyticsService>().logEvent( await locator<AnalyticsService>().logEvent(
eventCategory: "Refer Patient", eventCategory: "Refer Patient",
eventAction: "Submit Refer", eventAction: "Submit Refer",
@ -202,7 +203,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
} else { } else {
doctorError = null; doctorError = null;
} }
});
if (appointmentDate == null || if (appointmentDate == null ||
_selectedBranch == null || _selectedBranch == null ||
_selectedClinic == null || _selectedClinic == null ||
@ -308,8 +309,8 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
attributeName: 'facilityName', attributeName: 'facilityName',
attributeValueId: 'facilityId', attributeValueId: 'facilityId',
okText: TranslationBase.of(context).ok, okText: TranslationBase.of(context).ok,
okFunction: (selectedValue) { okFunction: (selectedValue) async {
setState(() async {
_selectedBranch = selectedValue; _selectedBranch = selectedValue;
_selectedClinic = null; _selectedClinic = null;
_selectedDoctor = null; _selectedDoctor = null;
@ -321,7 +322,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(model.error); DrAppToastMsg.showErrorToast(model.error);
} }
});
}, },
); );
showDialog( showDialog(
@ -357,8 +358,8 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
usingSearch: true, usingSearch: true,
hintSearchText: TranslationBase.of(context).clinicSearch, hintSearchText: TranslationBase.of(context).clinicSearch,
okText: TranslationBase.of(context).ok, okText: TranslationBase.of(context).ok,
okFunction: (selectedValue) { okFunction: (selectedValue) async {
setState(() async {
_selectedDoctor = null; _selectedDoctor = null;
_selectedClinic = selectedValue; _selectedClinic = selectedValue;
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
@ -372,7 +373,6 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
DrAppToastMsg.showErrorToast(model.error); DrAppToastMsg.showErrorToast(model.error);
} }
});
}, },
); );
showDialog( showDialog(

@ -486,7 +486,6 @@ class ReferralPatientDetailScreen extends StatelessWidget {
color: Colors.red[700], color: Colors.red[700],
fontColor: Colors.white, fontColor: Colors.white,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
fontSize: 1.8,
hPadding: 8, hPadding: 8,
vPadding: 12, vPadding: 12,
onPressed: () async { onPressed: () async {

@ -565,7 +565,6 @@ class ReferredPatientDetailScreen extends StatelessWidget {
color: Colors.red[700], color: Colors.red[700],
fontColor: Colors.white, fontColor: Colors.white,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
fontSize: 1.8,
hPadding: 8, hPadding: 8,
vPadding: 12, vPadding: 12,
disabled: referredPatient.referredDoctorRemarks == null disabled: referredPatient.referredDoctorRemarks == null

@ -4,6 +4,7 @@ import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
class LineChartCurved extends StatelessWidget { class LineChartCurved extends StatelessWidget {
final String title; final String title;
@ -110,10 +111,10 @@ class LineChartCurved extends StatelessWidget {
titlesData: FlTitlesData( titlesData: FlTitlesData(
bottomTitles: SideTitles( bottomTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 10, fontSize: 10,
), );},
rotateAngle: -65, rotateAngle: -65,
//rotateAngle:-65, //rotateAngle:-65,
margin: 22, margin: 22,
@ -162,11 +163,10 @@ class LineChartCurved extends StatelessWidget {
), ),
leftTitles: SideTitles( leftTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 10, fontSize: 10,
), );},
getTitles: (value) { getTitles: (value) {
// if (timeSeries.length < 10) { // if (timeSeries.length < 10) {
// return '${value.toInt()}'; // return '${value.toInt()}';

@ -128,10 +128,10 @@ class LineChartCurvedBloodPressure extends StatelessWidget {
titlesData: FlTitlesData( titlesData: FlTitlesData(
bottomTitles: SideTitles( bottomTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 10, fontSize: 10,
), );},
rotateAngle: -65, rotateAngle: -65,
//rotateAngle:-65, //rotateAngle:-65,
margin: 22, margin: 22,
@ -155,11 +155,10 @@ class LineChartCurvedBloodPressure extends StatelessWidget {
), ),
leftTitles: SideTitles( leftTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => const TextStyle( getTextStyles: (context, value) { return TextStyle(
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 10, fontSize: 10,
), );},
getTitles: (value) { getTitles: (value) {
return '${value.toInt()}'; return '${value.toInt()}';
}, },

@ -117,20 +117,20 @@ class VitalSingChartBloodPressure extends StatelessWidget {
(element) { (element) {
DateTime elementDate = DateTime elementDate =
AppDateUtils.getDateTimeFromServerFormat(element.createdOn); AppDateUtils.getDateTimeFromServerFormat(element.createdOn);
if (element.toJson()[viewKey1]?.toInt() != 0) if (element.toJson()[viewKey1]?.toInt() != 0 && element.toJson()[viewKey1]?.toInt() != null)
timeSeriesData1.add( timeSeriesData1.add(
TimeSeriesSales2( TimeSeriesSales2(
new DateTime( new DateTime(
elementDate.year, elementDate.month, elementDate.day), elementDate.year, elementDate.month, elementDate.day),
element.toJson()[viewKey1].toDouble(), element.toJson()[viewKey1]?.toDouble(),
), ),
); );
if (element.toJson()[viewKey2]?.toInt() != 0) if (element.toJson()[viewKey2]?.toInt() != 0 && element.toJson()[viewKey2]?.toInt() != null)
timeSeriesData2.add( timeSeriesData2.add(
TimeSeriesSales2( TimeSeriesSales2(
new DateTime( new DateTime(
elementDate.year, elementDate.month, elementDate.day), elementDate.year, elementDate.month, elementDate.day),
element.toJson()[viewKey2].toDouble(), element.toJson()[viewKey2]?.toDouble(),
), ),
); );
}, },

@ -366,7 +366,7 @@ class _RegisterConfirmationPatientPageState
borderColor: Color(0xFFeaeaea), borderColor: Color(0xFFeaeaea),
color: Color(0xFFeaeaea), color: Color(0xFFeaeaea),
fontColor: Colors.black, fontColor: Colors.black,
fontSize: 2.2,
onPressed: () { onPressed: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
@ -386,7 +386,7 @@ class _RegisterConfirmationPatientPageState
borderColor: Color(0xFFB8382B), borderColor: Color(0xFFB8382B),
color: HexColor("#D02127"), color: HexColor("#D02127"),
fontColor: Colors.white, fontColor: Colors.white,
fontSize: 2.0,
onPressed: () async { onPressed: () async {
setState(() { setState(() {
isSubmitted = true; isSubmitted = true;

@ -143,7 +143,7 @@ class _RegisterPatientPageState extends State<RegisterPatientPage>
borderColor: Color(0xFFeaeaea), borderColor: Color(0xFFeaeaea),
color: Color(0xFFeaeaea), color: Color(0xFFeaeaea),
fontColor: Colors.black, fontColor: Colors.black,
fontSize: 2.2,
onPressed: () { onPressed: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
@ -163,7 +163,7 @@ class _RegisterPatientPageState extends State<RegisterPatientPage>
borderColor: Color(0xFF359846), borderColor: Color(0xFF359846),
color: Color(0xFF359846), color: Color(0xFF359846),
fontColor: Colors.white, fontColor: Colors.white,
fontSize: 2.0,
onPressed: () {}, onPressed: () {},
), ),
), ),
@ -186,7 +186,7 @@ class _RegisterPatientPageState extends State<RegisterPatientPage>
borderColor: Color(0xFFeaeaea), borderColor: Color(0xFFeaeaea),
color: Color(0xFFeaeaea), color: Color(0xFFeaeaea),
fontColor: Colors.black, fontColor: Colors.black,
fontSize: 2.2,
onPressed: () { onPressed: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
@ -206,7 +206,7 @@ class _RegisterPatientPageState extends State<RegisterPatientPage>
borderColor: Color(0xFFB8382B), borderColor: Color(0xFFB8382B),
color: AppGlobal.appRedColor, color: AppGlobal.appRedColor,
fontColor: Colors.white, fontColor: Colors.white,
fontSize: 2.0,
onPressed: () { onPressed: () {
changePageViewIndex(_currentIndex + 1); changePageViewIndex(_currentIndex + 1);
}, },

@ -292,7 +292,7 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
_birthDateInGregorian = selectedDate; _birthDateInGregorian = selectedDate;
birthDateInHijri = HijriCalendar() birthDateInHijri = HijriCalendar()
.gregorianToHijri(selectedDate.year, .gregorianToHijri(selectedDate.year,
selectedDate.month, selectedDate.day); selectedDate.month, selectedDate.day) as HijriCalendar;
print(_birthDateInGregorian); print(_birthDateInGregorian);
print(birthDateInHijri); print(birthDateInHijri);
@ -326,7 +326,7 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
borderColor: Color(0xFFeaeaea), borderColor: Color(0xFFeaeaea),
color: Color(0xFFeaeaea), color: Color(0xFFeaeaea),
fontColor: Colors.black, fontColor: Colors.black,
fontSize: 2.2,
onPressed: () { onPressed: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
@ -346,7 +346,7 @@ class _RegisterSearchPatientPageState extends State<RegisterSearchPatientPage> {
borderColor: Color(0xFFB8382B), borderColor: Color(0xFFB8382B),
color: AppGlobal.appRedColor, color: AppGlobal.appRedColor,
fontColor: Colors.white, fontColor: Colors.white,
fontSize: 2.0,
onPressed: () async { onPressed: () async {
setState(() { setState(() {
isSubmitted = true; isSubmitted = true;

@ -440,7 +440,7 @@ class _ActivationPageState extends State<ActivationPage> {
borderColor: Color(0xFFeaeaea), borderColor: Color(0xFFeaeaea),
color: Color(0xFFeaeaea), color: Color(0xFFeaeaea),
fontColor: Colors.black, fontColor: Colors.black,
fontSize: 2.2,
onPressed: () { onPressed: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
@ -460,7 +460,7 @@ class _ActivationPageState extends State<ActivationPage> {
borderColor: Color(0xFFB8382B), borderColor: Color(0xFFB8382B),
color: HexColor("#D02127"), color: HexColor("#D02127"),
fontColor: Colors.white, fontColor: Colors.white,
fontSize: 2.0,
onPressed: () async { onPressed: () async {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await widget.model.checkActivationCode( await widget.model.checkActivationCode(

@ -1,4 +1,4 @@
import 'package:barcode_scan_fix/barcode_scan.dart'; import 'package:barcode_scan2/barcode_scan2.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart'; import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart';
@ -82,7 +82,7 @@ class _QrReaderScreenState extends State<QrReaderScreen> {
} }
_scanQrAndGetPatient(BuildContext context, ScanQrViewModel model) async { _scanQrAndGetPatient(BuildContext context, ScanQrViewModel model) async {
var result = await BarcodeScanner.scan(); var result = (await BarcodeScanner.scan()).rawContent;
if (result != "") { if (result != "") {
List<String> listOfParams = result.split(','); List<String> listOfParams = result.split(',');
int patientID = 0; int patientID = 0;

@ -573,11 +573,11 @@ class _RescheduleLeaveScreen extends State<RescheduleLeaveScreen> {
}, },
selectedItem: getSelectedDoctor(model2), selectedItem: getSelectedDoctor(model2),
showSearchBox: true, showSearchBox: true,
searchBoxDecoration: InputDecoration( // searchBoxDecoration: InputDecoration(
border: OutlineInputBorder(), // border: OutlineInputBorder(),
contentPadding: EdgeInsets.fromLTRB(12, 12, 8, 0), // contentPadding: EdgeInsets.fromLTRB(12, 12, 8, 0),
labelText: "Search Doctor", // labelText: "Search Doctor",
), // ),
popupTitle: Container( popupTitle: Container(
height: 50, height: 50,
decoration: BoxDecoration( decoration: BoxDecoration(

@ -1,79 +1,26 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_flexible_toast/flutter_flexible_toast.dart'; import 'package:fluttertoast/fluttertoast.dart';
class DrAppToastMsg { class DrAppToastMsg {
void showLongToast(msg) {
FlutterFlexibleToast.showToast(
message: msg,
toastLength: Toast.LENGTH_LONG,
);
}
static void showSuccesToast(msg) { static void showSuccesToast(msg) {
FlutterFlexibleToast.showToast( Fluttertoast.showToast(
message: msg, msg: msg,
toastLength: Toast.LENGTH_SHORT, toastLength: Toast.LENGTH_SHORT,
backgroundColor: AppGlobal.appGreenColor, gravity: ToastGravity.TOP,
icon: ICON.SUCCESS, // timeInSecForIosWeb: timeInSeconds,
fontSize: 16, backgroundColor: Colors.green,
imageSize: 35, textColor: Colors.white,
textColor: Colors.white); fontSize: 16);
} }
static void showErrorToast(msg) { static void showErrorToast(msg) {
FlutterFlexibleToast.showToast( Fluttertoast.showToast(
message: msg, msg: msg,
toastLength: Toast.LENGTH_SHORT, toastLength: Toast.LENGTH_SHORT,
toastGravity: ToastGravity.TOP, gravity: ToastGravity.TOP,
backgroundColor: Colors.red, backgroundColor: Colors.red,
icon: ICON.CLOSE,
fontSize: 16,
imageSize: 35,
timeInSeconds: 912,
textColor: Colors.white);
}
static void showShortToast(msg) {
FlutterFlexibleToast.showToast(
message: msg,
toastLength: Toast.LENGTH_SHORT,
icon: ICON.INFO,
timeInSeconds: 1);
}
static void showTopShortToast(msg) {
FlutterFlexibleToast.showToast(
message: msg,
toastLength: Toast.LENGTH_SHORT,
toastGravity: ToastGravity.TOP,
icon: ICON.WARNING,
timeInSeconds: 1);
}
static void showCenterShortToast(msg) {
FlutterFlexibleToast.showToast(
message: msg,
toastLength: Toast.LENGTH_SHORT,
toastGravity: ToastGravity.CENTER,
icon: ICON.WARNING,
timeInSeconds: 1);
}
static void showCenterShortLoadingToast(msg) {
FlutterFlexibleToast.showToast(
message: msg,
toastLength: Toast.LENGTH_LONG,
toastGravity: ToastGravity.BOTTOM,
icon: ICON.LOADING,
radius: 20,
elevation: 10,
textColor: Colors.white, textColor: Colors.white,
fontSize: 16);
timeInSeconds: 2);
}
static void cancelToast(msg) {
FlutterFlexibleToast.cancel();
} }
} }

@ -96,7 +96,7 @@ class PatientReferralItemWidget extends StatelessWidget {
: Colors.red[900], : Colors.red[900],
), ),
AppText( AppText(
referredDate, referredDate??"",
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
letterSpacing: -0.48, letterSpacing: -0.48,
@ -108,15 +108,13 @@ class PatientReferralItemWidget extends StatelessWidget {
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Expanded( AppText(
child: AppText( patientName??"",
patientName, fontSize: 16.0,
fontSize: 16.0, fontWeight: FontWeight.w600,
fontWeight: FontWeight.w600, color: Color(0xff2E303A),
color: Color(0xff2E303A), fontFamily: 'Poppins',
fontFamily: 'Poppins', letterSpacing: -0.64,
letterSpacing: -0.64,
),
), ),
SizedBox( SizedBox(
width: 0, width: 0,
@ -132,7 +130,7 @@ class PatientReferralItemWidget extends StatelessWidget {
width: 4, width: 4,
), ),
AppText( AppText(
referredTime, referredTime??"",
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 12.0, fontSize: 12.0,
@ -148,34 +146,23 @@ class PatientReferralItemWidget extends StatelessWidget {
Expanded( Expanded(
child: Column( child: Column(
children: [ children: [
Row( CustomRow(
mainAxisAlignment: MainAxisAlignment.start, label:
children: [ TranslationBase.of(context).fileNumber,
CustomRow( value: patientID,
label:
TranslationBase.of(context).fileNumber,
value: patientID,
),
],
), ),
Row( CustomRow(
mainAxisAlignment: MainAxisAlignment.start, label: isSameBranch
crossAxisAlignment: CrossAxisAlignment.start, ? TranslationBase.of(context)
children: [ .referredFrom
CustomRow( : TranslationBase.of(context).refClinic,
label: isSameBranch value: !isReferralClinic
? isSameBranch
? TranslationBase.of(context) ? TranslationBase.of(context)
.referredFrom .sameBranch
: TranslationBase.of(context).refClinic, : TranslationBase.of(context)
value: !isReferralClinic .otherBranch
? isSameBranch : " " + referralClinic,
? TranslationBase.of(context)
.sameBranch
: TranslationBase.of(context)
.otherBranch
: " " + referralClinic,
),
],
), ),
], ],
), ),
@ -207,15 +194,9 @@ class PatientReferralItemWidget extends StatelessWidget {
) )
], ],
), ),
Row( CustomRow(
mainAxisAlignment: MainAxisAlignment.start, label: TranslationBase.of(context).remarks + " : ",
crossAxisAlignment: CrossAxisAlignment.start, value: remark ?? "",
children: [
CustomRow(
label: TranslationBase.of(context).remarks + " : ",
value: remark ?? "",
),
],
), ),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,

@ -225,7 +225,7 @@ class _TextFieldsState extends State<TextFields> {
onTap: widget.onTapTextFields, onTap: widget.onTapTextFields,
keyboardAppearance: Theme.of(context).brightness, keyboardAppearance: Theme.of(context).brightness,
scrollPhysics: BouncingScrollPhysics(), scrollPhysics: BouncingScrollPhysics(),
autovalidate: widget.autoValidate, // autovalidate: widget.autoValidate,
textCapitalization: widget.textCapitalization, textCapitalization: widget.textCapitalization,
onFieldSubmitted: widget.inputAction == TextInputAction.next onFieldSubmitted: widget.inputAction == TextInputAction.next
? (widget.onSubmit != null ? (widget.onSubmit != null
@ -266,7 +266,7 @@ class _TextFieldsState extends State<TextFields> {
fontSize: widget.fontSize, fontWeight: widget.fontWeight), fontSize: widget.fontSize, fontWeight: widget.fontWeight),
inputFormatters: widget.keyboardType == TextInputType.phone inputFormatters: widget.keyboardType == TextInputType.phone
? <TextInputFormatter>[ ? <TextInputFormatter>[
WhitelistingTextInputFormatter.digitsOnly, // WhitelistingTextInputFormatter.digitsOnly,
_mobileFormatter, _mobileFormatter,
] ]
: widget.inputFormatters, : widget.inputFormatters,

@ -1,127 +0,0 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:expandable/expandable.dart';
import 'package:flutter/material.dart';
/// App Expandable Notifier with animation
/// [headerWidget] widget want to show in the header
/// [bodyWidget] widget want to show in the body
/// [title] the widget title
/// [collapsed] The widget shown in the collapsed state
class AppExpandableNotifier extends StatefulWidget {
final Widget headerWidget;
final Widget bodyWidget;
final String title;
final Widget collapsed;
final bool isExpand;
bool expandFlag = false;
var controller = new ExpandableController();
AppExpandableNotifier(
{this.headerWidget,
this.bodyWidget,
this.title,
this.collapsed,
this.isExpand = false});
_AppExpandableNotifier createState() => _AppExpandableNotifier();
}
class _AppExpandableNotifier extends State<AppExpandableNotifier> {
@override
void initState() {
setState(() {
if (widget.isExpand) {
widget.expandFlag = widget.isExpand;
widget.controller.expanded = true;
}
});
super.initState();
}
@override
Widget build(BuildContext context) {
return ExpandableNotifier(
child: Padding(
padding: const EdgeInsets.only(left: 10, right: 10, top: 4),
child: Card(
color: Colors.grey[200],
clipBehavior: Clip.antiAlias,
child: Column(
children: <Widget>[
SizedBox(
child: widget.headerWidget,
),
ScrollOnExpand(
scrollOnExpand: true,
scrollOnCollapse: false,
child: ExpandablePanel(
hasIcon: false,
theme: const ExpandableThemeData(
headerAlignment: ExpandablePanelHeaderAlignment.center,
tapBodyToCollapse: true,
),
header: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Padding(
padding: EdgeInsets.all(10),
child: Text(
widget.title ?? TranslationBase.of(context).details,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: SizeConfig.textMultiplier * 2,
),
),
),
),
IconButton(
icon: new Container(
height: 28.0,
width: 30.0,
decoration: new BoxDecoration(
color: Theme.of(context).primaryColor,
shape: BoxShape.circle,
),
child: new Center(
child: new Icon(
widget.expandFlag
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down,
color: Colors.white,
size: 30.0,
),
),
),
onPressed: () {
setState(() {
widget.expandFlag = !widget.expandFlag;
widget.controller.expanded = widget.expandFlag;
});
}),
]),
collapsed: widget.collapsed ?? Container(),
expanded: widget.bodyWidget,
builder: (_, collapsed, expanded) {
return Padding(
padding: EdgeInsets.only(left: 5, right: 5, bottom: 5),
child: Expandable(
controller: widget.controller,
collapsed: collapsed,
expanded: expanded,
theme: const ExpandableThemeData(crossFadePoint: 0),
),
);
},
),
),
],
),
),
),
);
}
}

@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:progress_hud_v2/progress_hud.dart';
import 'loader/gif_loader_container.dart'; import 'loader/gif_loader_container.dart';

@ -13,7 +13,7 @@ class AppButton extends StatefulWidget {
final IconData iconData; final IconData iconData;
final Widget icon; final Widget icon;
final Color color; final Color color;
final double fontSize; double fontSize;
final double padding; final double padding;
final Color fontColor; final Color fontColor;
final bool loading; final bool loading;
@ -32,7 +32,7 @@ class AppButton extends StatefulWidget {
this.iconData, this.iconData,
this.icon, this.icon,
this.color, this.color,
this.fontSize = 16, this.fontSize,
this.padding = 13, this.padding = 13,
this.loading = false, this.loading = false,
this.disabled = false, this.disabled = false,
@ -52,6 +52,9 @@ class AppButton extends StatefulWidget {
class _AppButtonState extends State<AppButton> { class _AppButtonState extends State<AppButton> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if(widget.fontSize == null ) {
widget.fontSize = SizeConfig.getHeightMultiplier() * 1.9;
}
return Container( return Container(
// height: MediaQuery.of(context).size.height * 0.075, // height: MediaQuery.of(context).size.height * 0.075,
height: widget.height, height: widget.height,

@ -96,7 +96,7 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
Container( Container(
height: widget.height != 0 && widget.maxLines == 1 height: widget.height != 0 && widget.maxLines == 1
? widget.height + 8 ? widget.height + 8
: MediaQuery.of(context).size.height * 0.098, : null,//MediaQuery.of(context).size.height * 0.098,
decoration: widget.hasBorder decoration: widget.hasBorder
? TextFieldsUtils.containerBorderDecoration( ? TextFieldsUtils.containerBorderDecoration(
Color(0Xffffffff), Color(0Xffffffff),
@ -117,7 +117,7 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
padding: widget.dropDownText == null padding: widget.dropDownText == null
? widget.isSearchTextField ? widget.isSearchTextField
? EdgeInsets.only(top: 10) ? EdgeInsets.only(top: 10)
: EdgeInsets.only(top: 7.5) : EdgeInsets.only(top: 0.5)
: EdgeInsets.only(top: 0), // 8.0 : EdgeInsets.only(top: 0), // 8.0
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -144,8 +144,7 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
height: height:
widget.height != 0 && widget.maxLines == 1 widget.height != 0 && widget.maxLines == 1
? widget.height - 22 ? widget.height - 22
: MediaQuery.of(context).size.height * : null,
0.045,
child: TextFormField( child: TextFormField(
textAlign: projectViewModel.isArabic textAlign: projectViewModel.isArabic
? TextAlign.right ? TextAlign.right
@ -156,8 +155,7 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
.textFieldSelectorDecoration( .textFieldSelectorDecoration(
widget.hintText, null, true), widget.hintText, null, true),
style: TextStyle( style: TextStyle(
fontSize: fontSize: SizeConfig.textMultiplier * 1.7,
14.0, //SizeConfig.textMultiplier * 1.7,
fontFamily: 'Poppins', fontFamily: 'Poppins',
color: Color(0xFF575757), color: Color(0xFF575757),
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,

@ -27,7 +27,7 @@ class AppTextFormField extends FormField<String> {
: super( : super(
onSaved: onSaved, onSaved: onSaved,
validator: validator, validator: validator,
autovalidate: autovalidate, // autovalidate: autovalidate,
builder: (FormFieldState<String> state) { builder: (FormFieldState<String> state) {
return Column( return Column(
children: <Widget>[ children: <Widget>[

@ -12,7 +12,16 @@ import 'package:speech_to_text/speech_to_text.dart' as stt;
import '../speech-text-popup.dart'; import '../speech-text-popup.dart';
class HtmlRichEditor extends StatefulWidget { class HtmlRichEditor extends StatefulWidget {
HtmlRichEditor({ final String hint;
final String initialText;
final double height;
final BoxDecoration decoration;
final bool darkMode;
final bool showBottomToolbar;
final List<Toolbar> toolbar;
final HtmlEditorController controller;
HtmlRichEditor({
key, key,
this.hint = "Your text here...", this.hint = "Your text here...",
this.initialText, this.initialText,
@ -21,26 +30,19 @@ class HtmlRichEditor extends StatefulWidget {
this.darkMode = false, this.darkMode = false,
this.showBottomToolbar = false, this.showBottomToolbar = false,
this.toolbar, this.toolbar,
this.controller,
}) : super(key: key); }) : super(key: key);
final String hint;
final String initialText;
final double height;
final BoxDecoration decoration;
final bool darkMode;
final bool showBottomToolbar;
final List<Toolbar> toolbar;
@override @override
_HtmlRichEditorState createState() => _HtmlRichEditorState(); _HtmlRichEditorState createState() => _HtmlRichEditorState();
} }
class _HtmlRichEditorState extends State<HtmlRichEditor> { class _HtmlRichEditorState extends State<HtmlRichEditor> {
ProjectViewModel projectViewModel; ProjectViewModel projectViewModel;
stt.SpeechToText speech = stt.SpeechToText(); stt.SpeechToText speech = stt.SpeechToText();
var recognizedWord; var recognizedWord;
var event = RobotProvider(); var event = RobotProvider();
@override @override
void initState() { void initState() {
@ -64,51 +66,42 @@ class _HtmlRichEditorState extends State<HtmlRichEditor> {
return Stack( return Stack(
children: [ children: [
HtmlEditor( HtmlEditor(
hint: widget.hint, controller: widget.controller,
height: widget.height, htmlToolbarOptions: HtmlToolbarOptions(defaultToolbarButtons: [
initialText: widget.initialText, StyleButtons(),
showBottomToolbar: widget.showBottomToolbar, FontSettingButtons(),
darkMode: widget.darkMode, FontButtons(),
decoration: widget.decoration ?? // ColorButtons(),
BoxDecoration( ListButtons(),
color: Colors.transparent, ParagraphButtons(),
borderRadius: BorderRadius.all( // InsertButtons(),
Radius.circular(30.0), // OtherButtons(),
), ]),
border: Border.all(color: Colors.grey[200], width: 0.5), htmlEditorOptions: HtmlEditorOptions(
), hint: widget.hint,
toolbar: widget.toolbar ?? initialText: widget.initialText,
const [ darkMode: widget.darkMode,
// Style(), ),
Font(buttons: [ otherOptions: OtherOptions(
FontButtons.bold, height: widget.height,
FontButtons.italic, decoration: widget.decoration ??
FontButtons.underline, BoxDecoration(
]), color: Colors.transparent,
// ColorBar(buttons: [ColorButtons.color]), borderRadius: BorderRadius.all(
Paragraph(buttons: [ Radius.circular(30.0),
ParagraphButtons.ul, ),
ParagraphButtons.ol, border: Border.all(color: Colors.grey[200], width: 0.5),
ParagraphButtons.paragraph ),
]), )),
// Insert(buttons: [InsertButtons.link, InsertButtons.picture, InsertButtons.video, InsertButtons.table]),
// Misc(buttons: [MiscButtons.fullscreen, MiscButtons.codeview, MiscButtons.help])
],
),
Positioned( Positioned(
top: top: 50, //MediaQuery.of(context).size.height * 0,
50, //MediaQuery.of(context).size.height * 0, right: projectViewModel.isArabic ? MediaQuery.of(context).size.width * 0.75 : 15,
right: projectViewModel.isArabic
? MediaQuery.of(context).size.width * 0.75
: 15,
child: Column( child: Column(
children: [ children: [
IconButton( IconButton(
icon: Icon(DoctorApp.speechtotext, icon: Icon(DoctorApp.speechtotext, color: Colors.black, size: 35),
color: Colors.black, size: 35),
onPressed: () { onPressed: () {
initSpeechState() initSpeechState().then((value) => {onVoiceText()});
.then((value) => {onVoiceText()});
}, },
), ),
], ],
@ -121,8 +114,7 @@ class _HtmlRichEditorState extends State<HtmlRichEditor> {
onVoiceText() async { onVoiceText() async {
new SpeechToText(context: context).showAlertDialog(context); new SpeechToText(context: context).showAlertDialog(context);
var lang = TranslationBase.of(AppGlobal.CONTEX).locale.languageCode; var lang = TranslationBase.of(AppGlobal.CONTEX).locale.languageCode;
bool available = await speech.initialize( bool available = await speech.initialize(onStatus: statusListener, onError: errorListener);
onStatus: statusListener, onError: errorListener);
if (available) { if (available) {
speech.listen( speech.listen(
onResult: resultListener, onResult: resultListener,
@ -150,15 +142,15 @@ class _HtmlRichEditorState extends State<HtmlRichEditor> {
].request(); ].request();
} }
void resultListener(result)async { void resultListener(result) async {
recognizedWord = result.recognizedWords; recognizedWord = result.recognizedWords;
event.setValue({"searchText": recognizedWord}); event.setValue({"searchText": recognizedWord});
String txt = await HtmlEditor.getText(); String txt = await widget.controller.getText();
if (result.finalResult == true) { if (result.finalResult == true) {
setState(() { setState(() {
SpeechToText.closeAlertDialog(context); SpeechToText.closeAlertDialog(context);
speech.stop(); speech.stop();
HtmlEditor.setText(txt+recognizedWord); widget.controller.setText(txt + recognizedWord);
}); });
} else { } else {
print(result.finalResult); print(result.finalResult);

@ -172,7 +172,7 @@ class _NewTextFieldsState extends State<NewTextFields> {
initialValue: widget.initialValue, initialValue: widget.initialValue,
keyboardAppearance: Theme.of(context).brightness, keyboardAppearance: Theme.of(context).brightness,
scrollPhysics: BouncingScrollPhysics(), scrollPhysics: BouncingScrollPhysics(),
autovalidate: widget.autoValidate, // autovalidate: widget.autoValidate,
textCapitalization: widget.textCapitalization, textCapitalization: widget.textCapitalization,
onFieldSubmitted: widget.inputAction == TextInputAction.next onFieldSubmitted: widget.inputAction == TextInputAction.next
? (widget.onSubmit != null ? (widget.onSubmit != null
@ -195,11 +195,11 @@ class _NewTextFieldsState extends State<NewTextFields> {
autofocus: widget.autoFocus ?? false, autofocus: widget.autoFocus ?? false,
validator: widget.validator, validator: widget.validator,
onSaved: widget.onSaved, onSaved: widget.onSaved,
style: Theme.of(context).textTheme.body2.copyWith( style: Theme.of(context).textTheme.bodyText1.copyWith(
fontSize: widget.fontSize, fontWeight: widget.fontWeight, color: Color(0xFF575757), fontFamily: 'Poppins'), fontSize: widget.fontSize, fontWeight: widget.fontWeight, color: Color(0xFF575757), fontFamily: 'Poppins'),
inputFormatters: widget.keyboardType == TextInputType.phone inputFormatters: widget.keyboardType == TextInputType.phone
? <TextInputFormatter>[ ? <TextInputFormatter>[
WhitelistingTextInputFormatter.digitsOnly, // WhitelistingTextInputFormatter.digitsOnly,
_mobileFormatter, _mobileFormatter,
] ]
: widget.inputFormatters, : widget.inputFormatters,

@ -11,101 +11,110 @@ description: A new Flutter project.
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.2.2+2 version: 4.3.5+1
environment: environment:
sdk: ">=2.8.0 <3.0.0" sdk: ">=2.7.0 <3.0.0"
#dependency_overrides: #dependency_overrides:
# intl: 0.17.0-nullsafety.2 # intl: 0.17.0-nullsafety.2
#dependency_overrides:
# intl: 0.17.0-nullsafety.2
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
hexcolor: ^1.0.1 hexcolor: ^2.0.4
flutter_localizations: flutter_localizations:
sdk: flutter sdk: flutter
flutter_device_type: ^0.2.0 flutter_device_type: ^0.4.0
intl: ^0.16.0 intl: ^0.17.0
http: ^0.12.0+4 http: ^0.13.0
provider: ^4.0.5+1 provider: ^6.0.1
shared_preferences: ^0.5.6+3 shared_preferences: ^2.0.6
imei_plugin: ^1.1.6 # imei_plugin: ^1.2.0
flutter_flexible_toast: ^0.1.4 # flutter_flexible_toast: ^0.1.4
local_auth: ^0.6.1+3 fluttertoast: ^8.0.8
http_interceptor: ^0.2.0 local_auth: ^1.1.6
progress_hud_v2: ^2.0.0 http_interceptor: ^0.4.1
connectivity: ^0.4.8+2
maps_launcher: ^1.2.0 connectivity: ^3.0.6
url_launcher: ^5.4.5 maps_launcher: ^2.0.0
charts_flutter: ^0.9.0 url_launcher: ^6.0.6
charts_flutter: ^0.12.0
flutter_swiper: ^1.1.6 flutter_swiper: ^1.1.6
#Icons #Icons
eva_icons_flutter: ^2.0.0 eva_icons_flutter: ^3.0.0
font_awesome_flutter: ^8.11.0 font_awesome_flutter: ^9.0.0
dropdown_search: ^0.4.8 dropdown_search: ^2.0.1
flutter_staggered_grid_view: ^0.3.2 flutter_staggered_grid_view: ^0.4.0
expandable: ^4.1.4 expandable: ^5.0.1
# Qr code Scanner # Qr code Scanner
barcode_scan_fix: ^1.0.2 barcode_scan2: ^4.1.4
# permissions # permissions
permission_handler: ^5.0.0+hotfix.3 permission_handler: ^8.0.1
device_info: ^0.4.2+4 device_info: ^2.0.2
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2 cupertino_icons: ^1.0.3
# SVG # SVG
flutter_svg: ^0.18.1 #flutter_svg: ^1.0.0
percent_indicator: ^2.1.1 percent_indicator: ^3.0.1
#Dependency Injection #Dependency Injection
get_it: ^4.0.2 get_it: ^7.1.3
#chart #chart
fl_chart: ^0.12.1 fl_chart: ^0.36.1
# Firebase # Firebase
firebase_messaging: ^7.0.3 firebase_messaging: ^10.0.1
firebase_analytics: 6.3.0 firebase_analytics : ^8.3.4
#GIF image #GIF image
flutter_gifimage: ^1.0.1 flutter_gifimage: ^1.0.1
#Autocomplete TextField #Autocomplete TextField
autocomplete_textfield: ^1.7.3 autocomplete_textfield: ^1.7.3
date_time_picker: ^1.1.1 date_time_picker: ^2.0.0
# Html # Html
html: ^0.14.0+4 html: ^0.15.0
# Flutter Html View # Flutter Html View
flutter_html: 1.0.2 flutter_html: ^2.1.0
sticky_headers: "^0.1.8" sticky_headers: ^0.2.0
file_picker: ^3.0.2+2
#speech to text #speech to text
speech_to_text: speech_to_text:
path: speech_to_text path: speech_to_text
quiver: ^2.1.5 quiver: ^3.0.0
flutter_colorpicker: ^0.5.0
# Html Editor Enhanced # Html Editor Enhanced
html_editor_enhanced: ^1.3.0 html_editor_enhanced: ^2.1.1
#Network Image #Network Image
cached_network_image: ^2.5.0 cached_network_image: ^3.1.0+1
# Badges # Badges
badges: ^1.1.4 badges: ^2.0.1
# Hijri # Hijri
# hijri: ^2.0.3 # hijri: ^2.0.3
hijri_picker: ^2.0.0 hijri_picker: ^3.0.0
# flutter_math_fork: ^0.6.0
# flutter_math_fork: ^0.6.0
@ -152,20 +161,20 @@ flutter:
- family: Poppins - family: Poppins
fonts: fonts:
- asset: assets/fonts/Poppins/Poppins-Regular.ttf - asset: assets/fonts/Poppins/Poppins-Regular.ttf
weight: 400 weight: 400
- asset: assets/fonts/Poppins/Poppins-Medium.ttf - asset: assets/fonts/Poppins/Poppins-Medium.ttf
weight: 500 weight: 500
- asset: assets/fonts/Poppins/Poppins-SemiBold.ttf - asset: assets/fonts/Poppins/Poppins-SemiBold.ttf
weight: 600 weight: 600
- asset: assets/fonts/Poppins/Poppins-Bold.ttf - asset: assets/fonts/Poppins/Poppins-Bold.ttf
weight: 700 weight: 700
- asset: assets/fonts/Poppins/Poppins-Bold.ttf - asset: assets/fonts/Poppins/Poppins-Bold.ttf
weight: 800 weight: 800
- asset: assets/fonts/Poppins/Poppins-Bold.ttf - asset: assets/fonts/Poppins/Poppins-Bold.ttf
weight: 900 weight: 900
# - family: Trajan Pro # - family: Trajan Pro
# fonts: # fonts:
# - asset: fonts/TrajanPro.ttf # - asset: fonts/TrajanPro.ttf

Loading…
Cancel
Save