-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Description
as title above, using latest firebase_auth, try linkWithCredentials function on android, nothing happen, the phone authentication will create new value on firebase console beside link to email authentication
But it works with whitelist number
Steps to Reproduce
- try to follow #27578, the result is
Because firebase_database >=2.0.0 depends on firebase_core ^0.3.0 and every version of firebase_auth from git depends on firebase_core ^0.2.5+1, firebase_database >=2.0.0 is incompatible with firebase_auth from git.
So, because dilo_balikpapan depends on both firebase_auth from git and firebase_database ^2.0.1, version solving failed.
pub get failed (1)
exit code 1
- next using this git #069#issuecomment-474108484
build success, but the phone authentication still create as new value on firebase console
after put phone number, didn't get otp message from firebase
- gradle.properties
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
- build.gradle /android
buildscript {
ext.kotlin_version = '1.3.20'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:4.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
- build.gradle android/app
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 28
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "itk.myoganugraha.dilobalikpapan"
minSdkVersion 21
multiDexEnabled true
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
minifyEnabled false
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
flutter {
source '../..'
}
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
- pubspec.yaml
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
google_sign_in: ^4.0.1
firebase_auth:
git:
url: https://github.com/aeroxis/plugins.git
path: packages/firebase_auth
ref: firebase-auth-phone-bug-fix
flutter_svg: ^0.10.3
shared_preferences: ^0.5.0
carousel_slider: ^1.1.0
firebase_database: ^2.0.1
barcode_scan: ^1.0.0
http: ^0.12.0+1
auto_size_text: ^0.3.0
datetime_picker_formfield: ^0.1.8
rxdart: ^0.20.0
flutter_datetime_picker: ^1.0.7
flutter_auth_buttons: ^0.3.1
google_maps_flutter: ^0.2.0+6
cached_network_image: ^0.6.1
date_format: ^1.0.6
url_launcher: ^5.0.1
month_picker_dialog: ^0.0.8
splashscreen: ^1.2.0
- login_screen.dart phone authentication
Future<Null> _verifyPhoneNumber() async {
final PhoneCodeAutoRetrievalTimeout autoRetrieve = (String verId) {
setState(() {
this._verificationId = verId;
this._codeTimedOut = true;
});
};
final PhoneCodeSent smsCodeSent = (String verId, [int forceCodeResend]) {
_codeTimer = Timer(Duration(minutes: 1), (){
setState(() {
_codeTimedOut = true;
});
});
setState(() {
_isPhoneVerifScreenPassed = true;
this._verificationId = verId;
this._loginStatus = LoginStatus.SMS_LOGIN;
});
};
final PhoneVerificationCompleted verifiedSuccess = (FirebaseUser user) async{
if(await _onCodeVerified(user)) {
await _finishSignIn(user);
} else {
_clearPreviousSession();
}
};
final PhoneVerificationFailed veriFailed = (AuthException exception) {
print('${exception.message}');
_isPhoneVerifScreenPassed = false;
};
final result = await _firebaseAuth.verifyPhoneNumber(
phoneNumber: '+62' + _phoneController.text,
timeout: Duration(minutes: 1),
codeAutoRetrievalTimeout: autoRetrieve,
codeSent: smsCodeSent,
verificationCompleted: verifiedSuccess,
verificationFailed: veriFailed
);
return result;
}
_signInWithPhoneNumber() async {
final AuthCredential credential = PhoneAuthProvider.getCredential(
verificationId: _verificationId,
smsCode: _verifCodeController.text
);
print(_verifCodeController.text);
await _firebaseAuth.linkWithCredential(credential)
.then((user) async {
await _onCodeVerified(user).then((codeVerified) async {
this._codeVerified = codeVerified;
});
if(this._codeVerified){
await _finishSignIn(user);
}
}).catchError((error) {
_showSnackbar(error.toString());
});
}
_finishSignIn(FirebaseUser user) async {
await _onCodeVerified(user).then((result) {
if(result){
print('user $user');
Navigator.of(context).pushReplacement(CupertinoPageRoute(
builder: (context) => MainScreen(
firebaseUser: user,
),
));
}
else {
_showSnackbar("Silahkan Login Ulang");
setState(() {
_clearPreviousSession();
});
}
});
}
Future<bool> _onCodeVerified(FirebaseUser user) async {
final isUserValid = (user != null &&
(user.phoneNumber != null && user.phoneNumber.isNotEmpty));
return isUserValid;
}
Logs
- Debug Console
D/FirebaseApp(24075): Notifying auth state listeners.
D/FirebaseApp(24075): Notified 0 auth state listeners.
I/flutter (24075): user FirebaseUser({providerData: [{uid: 6EKuFY43a6W0DGc3ZFKwXx3H1s13, phoneNumber: +62895341813546, providerId: firebase}], providerId: firebase, isAnonymous: false, uid: 6EKuFY43a6W0DGc3ZFKwXx3H1s13, lastSignInTimestamp: 1553015678311, creationTimestamp: 1553015678309, isEmailVerified: false, phoneNumber: +62895341813546})
I/flutter (24075): Another exception was thrown: 'package:flutter/src/painting/image_provider.dart': Failed assertion: line 470 pos 14: 'url != null': is not true.
- Flutter analyze
myoganugraha-macbook:dilo_balikpapan myoganugraha$ flutter analyze
Analyzing dilo_balikpapan...
info • This function has a return type of 'Future<List<BookingDetail>>', but doesn't end with a return statement •
lib/API/BookingList_API.dart:10:3 • missing_return
info • Unused import: 'dart:async' • lib/API/Booking_API.dart:1:8 • unused_import
info • Unused import: 'dart:io' • lib/API/Booking_API.dart:3:8 • unused_import
info • Unused import: 'package:dilo_balikpapan/Model/BookingDialog_Model.dart' • lib/API/Booking_API.dart:4:8 • unused_import
info • Name non-constant identifiers using lowerCamelCase • lib/API/Booking_API.dart:9:16 • non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/API/Booking_API.dart:10:16 • non_constant_identifier_names
info • Unused import: 'dart:async' • lib/API/CheckIn_API.dart:1:8 • unused_import
info • Unused import: 'dart:io' • lib/API/CheckIn_API.dart:3:8 • unused_import
info • Name non-constant identifiers using lowerCamelCase • lib/API/CheckIn_API.dart:8:16 • non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/API/CheckIn_API.dart:11:106 • non_constant_identifier_names
info • Unused import: 'dart:async' • lib/API/CheckOut_API.dart:1:8 • unused_import
info • Unused import: 'dart:io' • lib/API/CheckOut_API.dart:3:8 • unused_import
info • Name non-constant identifiers using lowerCamelCase • lib/API/CheckOut_API.dart:8:16 • non_constant_identifier_names
info • This function has a return type of 'Future<List<RiwayatKunjunganModel>>', but doesn't end with a return statement •
lib/API/RiwayatKunjungan_API.dart:11:3 • missing_return
info • This function has a return type of 'Future<List<RiwayatPeminjamanTempatModel>>', but doesn't end with a return
statement • lib/API/RiwayatPeminjaman_API.dart:10:3 • missing_return
info • Name non-constant identifiers using lowerCamelCase • lib/Model/Booking_Model.dart:25:13 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/Booking_Model.dart:32:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/Booking_Model.dart:35:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/Booking_Model.dart:36:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/Booking_Model.dart:38:23 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/Booking_Model.dart:39:65 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/Booking_Model.dart:40:9 • non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/Booking_Model.dart:40:26 •
non_constant_identifier_names
info • The value of the local variable 'riwayatKunjunganModelList' isn't used • lib/Model/RiwayatKunjungan_Model.dart:16:33 •
unused_local_variable
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:29:13 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:35:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:36:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:37:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:39:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:42:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:48:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:49:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:50:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatKunjungan_Model.dart:52:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:2:13 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:3:13 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:4:13 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:8:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:9:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:10:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:12:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:13:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:14:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:15:16 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:18:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:19:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:20:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:24:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:25:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:26:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:28:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:29:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:30:10 •
non_constant_identifier_names
info • Name non-constant identifiers using lowerCamelCase • lib/Model/RiwayatPeminjaman_Model.dart:31:10 •
non_constant_identifier_names
info • The value of the field '_controller' isn't used • lib/Screens/AboutDILo/AboutDILo_Screen.dart:22:34 • unused_field
info • Method doesn't override an inherited method • lib/Screens/BukuTamu/CheckIn_Bloc.dart:20:8 •
override_on_non_overriding_method
info • Unused import: 'CheckIn_Bloc.dart' • lib/Screens/BukuTamu/CheckIn_Root.dart:4:8 • unused_import
info • Unused import: 'package:shared_preferences/shared_preferences.dart' • lib/Screens/BukuTamu/CheckIn_Screen.dart:9:8 •
unused_import
info • The value of the field '_id' isn't used • lib/Screens/BukuTamu/CheckIn_Screen.dart:23:44 • unused_field
info • 'child' is deprecated and shouldn't be used • lib/Screens/BukuTamu/CheckIn_Screen.dart:342:7 • deprecated_member_use
info • 'child' is deprecated and shouldn't be used • lib/Screens/BukuTamu/CheckIn_Screen.dart:376:9 • deprecated_member_use
info • 'child' is deprecated and shouldn't be used • lib/Screens/BukuTamu/CheckIn_Screen.dart:441:9 • deprecated_member_use
info • 'child' is deprecated and shouldn't be used • lib/Screens/BukuTamu/CheckIn_Screen.dart:487:9 • deprecated_member_use
info • 'child' is deprecated and shouldn't be used • lib/Screens/BukuTamu/CheckIn_Screen.dart:535:7 • deprecated_member_use
info • 'child' is deprecated and shouldn't be used • lib/Screens/BukuTamu/CheckIn_Screen.dart:566:9 • deprecated_member_use
info • 'child' is deprecated and shouldn't be used • lib/Screens/BukuTamu/CheckIn_Screen.dart:611:9 • deprecated_member_use
info • The function '_validateCheckinForm' isn't used • lib/Screens/BukuTamu/CheckIn_Screen.dart:656:6 • unused_element
info • This function has a return type of 'Widget', but doesn't end with a return statement •
lib/Screens/DetailRiwayatPinjaman/DetailRiwayatPeminjamanTempat_Screen.dart:378:3 • missing_return
info • Unused import: 'package:dilo_balikpapan/Screens/Login/Login_Screen.dart' • lib/Screens/Home/Home_Screen.dart:5:8 •
unused_import
info • The value of the field '_currentSlide' isn't used • lib/Screens/Home/Home_Screen.dart:34:7 • unused_field
warning • The parameter 'onPressed' is required • lib/Screens/Home/Home_Screen.dart:186:21 • missing_required_param
warning • The parameter 'onPressed' is required • lib/Screens/Home/Home_Screen.dart:245:21 • missing_required_param
info • The class 'Future' was not exported from 'dart:core' until version 2.1, but this code is required to be able to run on
earlier versions • lib/Screens/Home/Home_Screen.dart:291:3 • sdk_version_async_exported_from_core
info • Method doesn't override an inherited method • lib/Screens/Login/Login_Bloc.dart:19:8 •
override_on_non_overriding_method
info • The value of the field '_isGoogleSignIn' isn't used • lib/Screens/Login/Login_Screen.dart:36:8 • unused_field
info • The value of the field '_isPhoneVerifScreenPassed' isn't used • lib/Screens/Login/Login_Screen.dart:37:8 •
unused_field
info • The value of the field '_codeTimedOut' isn't used • lib/Screens/Login/Login_Screen.dart:38:8 • unused_field
info • The value of the field '_codeTimer' isn't used • lib/Screens/Login/Login_Screen.dart:42:9 • unused_field
info • The value of the field '_areaCode' isn't used • lib/Screens/Login/Login_Screen.dart:46:9 • unused_field
info • This function has a return type of 'Future<GoogleSignInAccount>', but doesn't end with a return statement •
lib/Screens/Login/Login_Screen.dart:330:3 • missing_return
info • The class 'Stream' was not exported from 'dart:core' until version 2.1, but this code is required to be able to run on
earlier versions • lib/Screens/PeminjamanTempat/BookingForm/BookingForm_Bloc.dart:9:3 •
sdk_version_async_exported_from_core
info • The class 'Stream' was not exported from 'dart:core' until version 2.1, but this code is required to be able to run on
earlier versions • lib/Screens/PeminjamanTempat/BookingForm/BookingForm_Bloc.dart:10:3 •
sdk_version_async_exported_from_core
info • The class 'Stream' was not exported from 'dart:core' until version 2.1, but this code is required to be able to run on
earlier versions • lib/Screens/PeminjamanTempat/BookingForm/BookingForm_Bloc.dart:12:5 •
sdk_version_async_exported_from_core
info • Method doesn't override an inherited method • lib/Screens/PeminjamanTempat/BookingForm/BookingForm_Bloc.dart:25:3 •
override_on_non_overriding_method
info • Unused import: 'package:dilo_balikpapan/Screens/PeminjamanTempat/BookingReview/BookingReview_Screen.dart' •
lib/Screens/PeminjamanTempat/BookingForm/BookingForm_Screen.dart:7:8 • unused_import
info • The class 'Future' was not exported from 'dart:core' until version 2.1, but this code is required to be able to run on
earlier versions • lib/Screens/PeminjamanTempat/BookingForm/BookingForm_Screen.dart:221:3 •
sdk_version_async_exported_from_core
info • 'child' is deprecated and shouldn't be used • lib/Screens/PeminjamanTempat/BookingForm/BookingForm_Screen.dart:227:7 •
deprecated_member_use
info • 'child' is deprecated and shouldn't be used • lib/Screens/PeminjamanTempat/BookingForm/BookingForm_Screen.dart:266:9 •
deprecated_member_use
info • Unused import: 'package:intl/intl.dart' • lib/Screens/PeminjamanTempat/BookingList/Booking_Bloc.dart:1:8 •
unused_import
info • Unused import: 'Booking_BLoC.dart' • lib/Screens/PeminjamanTempat/BookingList/Booking_Root.dart:4:8 • unused_import
info • Unused import: 'dart:async' • lib/Screens/PeminjamanTempat/BookingList/Booking_Screen.dart:12:8 • unused_import
info • The value of the field '_date' isn't used • lib/Screens/PeminjamanTempat/BookingList/Booking_Screen.dart:35:12 •
unused_field
info • This function has a return type of 'Widget', but doesn't end with a return statement •
lib/Screens/PeminjamanTempat/BookingList/Booking_Screen.dart:258:3 • missing_return
info • The method '_datePickerTanggalPeminjaman' isn't used •
lib/Screens/PeminjamanTempat/BookingList/Booking_Screen.dart:258:10 • unused_element
info • Close instances of `dart.core.Sink` • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:6:9 •
close_sinks
info • Close instances of `dart.core.Sink` • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:7:9 •
close_sinks
info • Close instances of `dart.core.Sink` • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:8:9 •
close_sinks
info • Close instances of `dart.core.Sink` • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:9:9 •
close_sinks
info • Close instances of `dart.core.Sink` • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:10:9 •
close_sinks
info • Close instances of `dart.core.Sink` • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:11:9 •
close_sinks
info • Close instances of `dart.core.Sink` • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:12:9 •
close_sinks
info • Close instances of `dart.core.Sink` • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:13:9 •
close_sinks
info • Method doesn't override an inherited method • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:47:3
• override_on_non_overriding_method
info • Avoid using unnecessary statements • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:48:5 •
unnecessary_statements
info • Avoid using unnecessary statements • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:49:5 •
unnecessary_statements
info • Avoid using unnecessary statements • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:50:5 •
unnecessary_statements
info • Avoid using unnecessary statements • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:51:5 •
unnecessary_statements
info • Avoid using unnecessary statements • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:52:5 •
unnecessary_statements
info • Avoid using unnecessary statements • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:53:5 •
unnecessary_statements
info • Avoid using unnecessary statements • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:54:5 •
unnecessary_statements
info • Avoid using unnecessary statements • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Bloc.dart:55:5 •
unnecessary_statements
info • Unused import: 'package:dilo_balikpapan/Screens/Main/MainScreen.dart' •
lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Screen.dart:3:8 • unused_import
info • The class 'Future' was not exported from 'dart:core' until version 2.1, but this code is required to be able to run on
earlier versions • lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Screen.dart:402:3 •
sdk_version_async_exported_from_core
info • 'child' is deprecated and shouldn't be used •
lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Screen.dart:407:7 • deprecated_member_use
info • 'child' is deprecated and shouldn't be used •
lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Screen.dart:438:9 • deprecated_member_use
info • 'child' is deprecated and shouldn't be used •
lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Screen.dart:505:9 • deprecated_member_use
info • 'child' is deprecated and shouldn't be used •
lib/Screens/PeminjamanTempat/BookingReview/BookingReview_Screen.dart:550:9 • deprecated_member_use
info • Unused import: 'package:dilo_balikpapan/Screens/AboutDILo/AboutDILo_Screen.dart' •
lib/Screens/Profile/Profile_Screen.dart:2:8 • unused_import
info • Unused import: 'package:dilo_balikpapan/Screens/Login/Login_Root.dart' • lib/Screens/Profile/Profile_Screen.dart:3:8 •
unused_import
info • Unused import: 'package:dilo_balikpapan/Screens/Login/Login_Screen.dart' • lib/Screens/Profile/Profile_Screen.dart:4:8
• unused_import
info • Unused import: 'package:dilo_balikpapan/Screens/RiwayatKunjungan/RiwayatKunjungan_Root.dart' •
lib/Screens/Profile/Profile_Screen.dart:5:8 • unused_import
info • Unused import: 'package:dilo_balikpapan/Screens/RiwayatPeminjaman/RIwayatPeminjaman_Root.dart' •
lib/Screens/Profile/Profile_Screen.dart:6:8 • unused_import
info • Unused import: 'package:google_sign_in/google_sign_in.dart' • lib/Screens/Profile/Profile_Screen.dart:10:8 •
unused_import
info • The value of the field '_id' isn't used • lib/Screens/Profile/Profile_Screen.dart:24:44 • unused_field
info • The value of the local variable 'theme' isn't used • lib/Screens/Profile/Profile_Screen.dart:30:11 •
unused_local_variable
info • The class 'Future' was not exported from 'dart:core' until version 2.1, but this code is required to be able to run on
earlier versions • lib/Screens/Profile/Profile_Screen.dart:142:3 • sdk_version_async_exported_from_core
info • Unused import: 'package:month_picker_dialog/month_picker_dialog.dart' •
lib/Screens/RiwayatKunjungan/RiwayatKunjungan_Screen.dart:9:8 • unused_import
info • Unused import: 'package:month_picker_dialog/month_picker_dialog.dart' •
lib/Screens/RiwayatPeminjaman/RiwayatPeminjaman_Screen.dart:9:8 • unused_import
info • This function has a return type of 'Widget', but doesn't end with a return statement •
lib/Screens/RiwayatPeminjaman/RiwayatPeminjaman_Screen.dart:194:3 • missing_return
info • Unused import: 'package:flutter_svg/flutter_svg.dart' • lib/Screens/SplashScreen/SplashScreenPage.dart:6:8 •
unused_import
info • The value of the field '_googleSignIn' isn't used • lib/Screens/SplashScreen/SplashScreenPage.dart:18:16 •
unused_field
info • The class 'Future' was not exported from 'dart:core' until version 2.1, but this code is required to be able to run on
earlier versions • lib/Screens/SplashScreen/SplashScreenPage.dart:40:3 • sdk_version_async_exported_from_core
info • Method doesn't override an inherited method • lib/Widgets/ReactiveRefreshIndicator.dart:88:8 •
override_on_non_overriding_method
info • Unused import: 'package:dilo_balikpapan/Screens/Login/Login_Root.dart' • lib/main.dart:1:8 • unused_import
info • Unused import: 'package:dilo_balikpapan/Screens/Main/MainScreen.dart' • lib/main.dart:2:8 • unused_import
135 issues found. (ran in 6.8s)
- Flutter doctor
myoganugraha-macbook:dilo_balikpapan myoganugraha$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel dev, v1.3.11, on Mac OS X 10.14.3 18D109, locale en-ID)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
[✓] Android Studio (version 3.3)
[✓] VS Code (version 1.31.1)
[✓] Connected device (1 available)
• No issues found!
iOS result
flutter: user FirebaseUser({displayName: M. Yoga Nugraha, providerId: Firebase, uid: 8VM0mdDTGYZ56losipiAWsrpygn1, phoneNumber: +62821557, isEmailVerified: true, providerData: [{email: myoganugraha@gmail.com, providerId: google.com, photoUrl: https://lh5.googleusercontent.com/-8ukl9XdCrPo/AAAAAAAAAAI/AAAAAAAAALA/EZjAjPrcWNs/s96-c/photo.jpg, displayName: M. Yoga Nugraha, uid: 105883774160220132637, phoneNumber: null}, {email: null, providerId: phone, photoUrl: null, displayName: null, uid: null, phoneNumber: +62821557}], email: myoganugraha@gmail.com, photoUrl: https://lh5.googleusercontent.com/-8ukl9XdCrPo/AAAAAAAAAAI/AAAAAAAAALA/EZjAjPrcWNs/s96-c/photo.jpg, lastSignInTimestamp: 1553016360, isAnonymous: false, creationTimestamp: 1553016284})
flutter: Another exception was thrown: 'package:flutter/src/painting/image_provider.dart': Failed assertion: line 470 pos 14: 'url != null': is not true.
i put the screenshot of firebase console result too,
the second data is from iOS, first and third is from android authentication
