Stripe cannot make make payment error in webview - flutter

I'm using stripe payment gateway in my app everything works fine when i enter card details after that it redirect to the OTP page after enter otp and submit it throws this error
This problem occurs only in live mode, in test mode debit card won't ask for OTP
I/flutter ( 5342): errprint : PlatformException(failed, failed, null, null)
payment-service.dart
import 'dart:convert';
import 'package:flutter/services.dart';
import 'package:http/http.dart' as http;
import 'package:stripe_payment/stripe_payment.dart';
class StripeTransactionResponse {
String message;
bool success;
StripeTransactionResponse({this.message, this.success});
}
class StripeService {
static String apiBase = 'https://api.stripe.com/v1';
static String paymentApiUrl = '${StripeService.apiBase}/payment_intents';
static String secret = 'xxxMy_secretxxx';
static Map<String, String> headers = {
'Authorization': 'Bearer ${StripeService.secret}',
'Content-Type': 'application/x-www-form-urlencoded'
};
static init() {
StripePayment.setOptions(StripeOptions(
publishableKey: "xxxMy_keyxxx",
androidPayMode: 'production'));
}
static Future<StripeTransactionResponse> payViaExistingCard(
{String amount, String currency, CreditCard card}) async {
try {
var paymentMethod = await StripePayment.createPaymentMethod(
PaymentMethodRequest(card: card));
var paymentIntent =
await StripeService.createPaymentIntent(amount, currency);
print("payment intent ${paymentIntent}");
var response = await StripePayment.confirmPaymentIntent(PaymentIntent(
clientSecret: paymentIntent['client_secret'],
paymentMethodId: paymentMethod.id));
print("Payment confirm ${response.status}");
if (response.status == 'succeeded') {
return new StripeTransactionResponse(
message: 'Transaction successful', success: true);
} else {
return new StripeTransactionResponse(
message: 'Transaction failed', success: false);
}
} on PlatformException catch (err) {
print("errprint : $err");
return StripeService.getPlatformExceptionErrorResult(err);
} catch (err) {
print("errprint$err");
return new StripeTransactionResponse(
message: 'Transaction failed: ${err.toString()}', success: false);
}
}
static Future<Map<String, dynamic>> createPaymentIntent(
String amount, String currency) async {
try {
Map<String, dynamic> body = {
'amount': amount,
'currency': currency,
'payment_method_types[]': 'card',
'description': 'Software development services',
'shipping[name]': 'Jenny Rosen',
'shipping[address][line1]': '510 Townsend St',
'shipping[address][postal_code]': '98140',
'shipping[address][city]': 'San Francisco',
'shipping[address][state]': 'TN',
'shipping[address][country]': 'IN',
};
var response = await http.post(StripeService.paymentApiUrl,
body: body, headers: StripeService.headers);
print("check post res${jsonDecode(response.body)}");
return jsonDecode(response.body);
} catch (err) {
print('err charging user: ${err.toString()}');
}
return null;
}
}
This is my pubspec.yaml
name: message
description: A new Flutter project.
# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
intro_slider: ^2.3.2
firebase_auth: ^0.18.0+1
cloud_firestore: ^0.14.0+2
fluttertoast: ^7.0.2
image_picker: ^0.6.0+9
shared_preferences: ^0.5.3+1
firebase_storage: ^4.0.0
#flutter_html: ^1.0.2
firebase_core: ^0.5.0
giffy_dialog:
cached_network_image: ^2.2.0+1
modal_progress_hud: ^0.1.3
intl: ^0.16.1
flutter_clipboard_manager:
sentry: ^2.2.0
timeago: ^2.0.27
qr_flutter:
graphql:
image_cropper: ^1.0.2
contacts_service: ^0.4.6
permission_handler: ^5.0.1+1
share: ^0.6.1
fleva_icons: ^1.0.0
google_fonts : ^0.2.0
flutter_staggered_grid_view: ^0.3.0
flutter_icons: ^1.0.0+1
flutter_cache_store:
web3dart: ^1.2.3
bitcoins: ^1.0.3
#bitcoinFlutter
bitcoin_flutter: ^2.0.1
carousel_slider: ^1.3.1
transparent_image: ^1.0.0
smooth_star_rating: ^1.0.3
dots_indicator: ^1.1.0
bip32: ^1.0.5
bip39: ^1.0.3
tuple:
hex: ^0.1.2
scoped_model: ^1.0.1
equatable:
crypto: ^2.1.5
encrypt: ^4.0.2
localstorage:
path_provider:
photo_view: ^0.4.0
mime: ^0.9.6+2
ntp: ^1.0.3
decimal:
virtual_keyboard:
local_auth:
url_launcher: ^5.7.2
launch_review: ^2.0.0
flutter_secure_storage: ^3.3.4
giphy_client: ^0.2.0
flutter_barcode_scanner:
firebase_messaging: ^5.0.2
font_awesome_flutter:
#otpinput field
pin_code_fields: ^5.0.1
#otpanimation lib
flare_flutter: ^2.0.6
flutter_slidable: ^0.5.7
file_picker: ^2.0.6
ethereum_address:
flutter_downloader:
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.3
#upi payment gateway
upi_india: ^2.1.2
cool_alert: ^1.0.1
#webview for paymentgateway
#webview_flutter: ^1.0.0
#paypal payment gateway
http_auth: ^0.3.0
#Razorpay payment gateway
#razorpay_flutter: ^1.2.2
#stripe payment gateway
stripe_payment: ^1.0.8
#stripeUI
flutter_credit_card: ^0.1.3
progress_dialog: ^1.2.2
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- assets/img_not_available.jpeg
- assets/flags/
- assets/emoji/
- assets/images/
- assets/bg1.jpg
- assets/giphy.png
- assets/anime/otp.flr
- assets/splash.png
- assets/splashc.jpg
- assets/json/FacebookPost.json
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages

Assuming that "OTP" is a "one time password" as part of a 3D Secure flow, then you can trigger this in test mode by using the SCA regulatory test cards such as the 3155 or 3184 card.
It's not clear where your error is coming from, but if you can share more detail with reproduction in test mode then someone may be able to offer more suggestions.

Related

Flutter app on android nougat (7.0.0) restarting the device

I had reports of users telling my app restarts the device on android 7.0.0 I tried it on the emulator and that is true. I started trying a lot of things I thought it could be a package or something.
what I finished doing is trying in a whole new project the default app that flutter creates. I tried it in the same version android 7.0.0 and there wasn't any problem.
I grabbed and pasted the main.dart from the default in my project and it keeps closing. I'll show the code just in case:
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
#override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to Colors.green and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or simply save your changes to "hot reload" in a Flutter IDE).
// Notice that the counter didn't reset back to zero; the application
// is not restarted.
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
// This widget is the home page of your application. It is stateful, meaning
// that it has a State object (defined below) that contains fields that affect
// how it looks.
// This class is the configuration for the state. It holds the values (in this
// case the title) provided by the parent (in this case the App widget) and
// used by the build method of the State. Fields in a Widget subclass are
// always marked "final".
final String title;
#override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
// This call to setState tells the Flutter framework that something has
// changed in this State, which causes it to rerun the build method below
// so that the display can reflect the updated values. If we changed
// _counter without calling setState(), then the build method would not be
// called again, and so nothing would appear to happen.
_counter++;
});
}
#override
Widget build(BuildContext context) {
// This method is rerun every time setState is called, for instance as done
// by the _incrementCounter method above.
//
// The Flutter framework has been optimized to make rerunning build methods
// fast, so that you can just rebuild anything that needs updating rather
// than having to individually change instances of widgets.
return Scaffold(
appBar: AppBar(
// Here we take the value from the MyHomePage object that was created by
// the App.build method, and use it to set our appbar title.
title: Text(widget.title),
),
body: Center(
// Center is a layout widget. It takes a single child and positions it
// in the middle of the parent.
child: Column(
// Column is also a layout widget. It takes a list of children and
// arranges them vertically. By default, it sizes itself to fit its
// children horizontally, and tries to be as tall as its parent.
//
// Invoke "debug painting" (press "p" in the console, choose the
// "Toggle Debug Paint" action from the Flutter Inspector in Android
// Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
// to see the wireframe for each widget.
//
// Column has various properties to control how it sizes itself and
// how it positions its children. Here we use mainAxisAlignment to
// center the children vertically; the main axis here is the vertical
// axis because Columns are vertical (the cross axis would be
// horizontal).
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}
It's just the default code. This is what throws in the debug console before it restarts the device:
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
D/FlutterGeolocator( 8847): Attaching Geolocator to activity
D/FlutterGeolocator( 8847): Creating service.
D/FlutterGeolocator( 8847): Binding to location service.
D/FlutterLocationService( 8847): Creating service.
D/FlutterLocationService( 8847): Binding to location service.
D/FlutterGeolocator( 8847): Geolocator foreground service connected
D/FlutterGeolocator( 8847): Initializing Geolocator services
D/FlutterGeolocator( 8847): Flutter engine connected. Connected engine count 1
Connecting to VM Service at ws://127.0.0.1:61877/QRHypptu-ro=/ws
Lost connection to device.
Exited
Here's my pubspec.yaml
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: "none" # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 2.1.2+21
environment:
sdk: ">=2.17.0 <3.7.3"
dependencies:
age_calculator: ^1.0.0
animate_do: ^3.0.2
appinio_swiper: ^1.0.3
badges: ^2.0.3
cached_network_image: ^3.2.1
carousel_images: ^1.1.2
carousel_slider: ^4.1.1
chat_bubbles: ^1.2.0
cloud_firestore: ^4.1.0
cupertino_icons: ^1.0.2
date_time_picker: ^2.1.0
dio: ^4.0.6
email_validator: ^2.0.1
equatable: ^2.0.3
extended_image: ^6.2.1
faker: ^2.0.0
firebase_auth: ^4.1.4
firebase_core: ^2.3.0
firebase_database: ^10.0.6
firebase_storage: ^11.0.6
flutter:
sdk: flutter
flutter_bloc: ^8.1.2
flutter_cache_manager: ^3.3.0
flutter_dotenv: ^5.0.2
flutter_feather_icons: ^2.0.0+1
flutter_form_builder: ^7.2.1
flutter_google_places: ^0.3.0
flutter_localizations:
sdk: flutter
flutter_markdown: ^0.6.13
flutter_native_splash: ^2.2.12
flutter_secure_storage: ^6.0.0
flutter_svg: ^1.1.3
geocoder2: ^1.4.0
geolocator: ^9.0.2
google_fonts: ^3.0.1
google_maps_flutter: ^2.2.1
google_sign_in: ^5.3.1
gradient_borders: ^0.2.0
http: ^0.13.5
image_picker: ^0.8.5+3
insta_image_viewer: ^1.0.2
intl: ^0.17.0
jiffy: ^5.0.0
jwt_decode: ^0.3.1
loading_animation_widget: ^1.2.0+2
location: ^4.4.0
lottie: ^1.4.2
marquee: ^2.2.3
permission_handler: ^10.1.0
photo_view: ^0.14.0
pinch_zoom: ^1.0.0
preload_page_view: ^0.1.6
provider: ^6.0.4
share_plus: ^4.5.2
shared_preferences: ^2.0.15
shimmer: ^2.0.0
simple_gradient_text: ^1.2.3
text_scroll: ^0.1.2
theme_provider: ^0.5.0
url_launcher: ^6.1.8
video_player: ^2.4.7
zoom_pinch_overlay: ^1.2.0
dev_dependencies:
flutter_launcher_icons: ^0.11.0
flutter_lints: ^2.0.1
flutter_test:
sdk: flutter
flutter_native_splash:
background_image: assets/img/brand/gradient.png
background_image_dark: assets/img/brand/gradientBlack.png
image: assets/img/others/splash.png
image_dark: assets/img/brand/wikenLogoBlack.png
branding: assets/img/brand/WikenBrand.png
branding_dark: assets/img/brand/WikenBrandBlack.png
android_12:
image: assets/img/brand/12logo.png
image_dark: assets/img/brand/13logo.png
color: "#EE7E58"
color_dark: "#1F1F1F"
flutter_icons:
android: true
ios: true
image_path: "assets/app_logo.png"
adaptative_icon_background: "#ffffff"
adaptative_icon_foreground: "assets/img/brand/logo_foreground.png"
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- .env
- assets/
- assets/img/
- assets/img/alertas/
- assets/img/brand/
- assets/img/login/
- assets/img/maps/
- assets/img/others/
- assets/img/placeholder/
- assets/img/muestra/
- assets/img/uploadScreen/
- assets/img/tutorial/
- assets/svg/
- assets/ca/
fonts:
- family: Montserrat
fonts:
- asset: assets/fonts/Montserrat-Regular.ttf
- asset: assets/fonts/Montserrat-Italic-VariableFont_wght.ttf
weight: 100
- asset: assets/fonts/Montserrat-Light.ttf
weight: 300
- asset: assets/fonts/Montserrat-Medium.ttf
weight: 500
- asset: assets/fonts/Montserrat-SemiBold.ttf
weight: 600
- asset: assets/fonts/Montserrat-Bold.ttf
weight: 700
- family: Montserrat Alternates
fonts:
- asset: assets/fonts/MontserratAlternates-Regular.ttf
- asset: assets/fonts/MontserratAlternates-Bold.ttf
weight: 700
I have already run flutter clean, flutter pub get, flutter upgrade. I'm on flutter 3.7.3
I hope you can help me! Thanks in advance.

flutter two packages conflict

I'm trying to use date_picker_timeline saying :
pubspec.YAML
dependencies:
bottom_navy_bar: ^6.0.0
cloud_firestore: ^3.1.18
cupertino_icons: ^1.0.2
dash: ^1.0.3
drop_down_list: ^0.0.2
firebase_auth: ^3.3.20
firebase_core: ^1.18.0
flutter:
sdk: flutter
flutter_secure_storage: ^5.0.2
flutter_signin_button: ^2.0.0
google_fonts: ^3.0.1
google_sign_in: ^5.4.0
line_icons: ^2.0.1
provider: ^6.0.3
snippet_coder_utils: ^1.0.8
date_picker_timeline:
/C:/flutter/.pub-cache/hosted/pub.dartlang.org/date_picker_timeline-1.2.3/lib/date_picker_widget.dart:104:8: Error: Can't declare a member that conflicts with an inherited one.
void initState() {
^^^^^^^^^
/C:/flutter/.pub-cache/hosted/pub.dartlang.org/date_picker_timeline-1.2.3/lib/date_picker_widget.dart:128:20: Error: The method 'call' isn't defined for the class 'void'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
super.initState();
my datepiker method
DatePicker datePickerMethod() {
return DatePicker(
DateTime.now(),
controller: dp,
initialSelectedDate: DateTime.now(),
selectionColor: Colors.blueAccent,
selectedTextColor: Colors.white,
);
}
already tried to flutter clear alson to delet puspec.lock not working

Any thoughts on why I cannot get this freezed (flutter/dart) example (with generics) to build?

I am new to flutter and dart. I'm trying to get the following example to work in my test project:
https://pub.dev/packages/freezed#deserializing-generic-classes
Here is my entire dart file (api_response.dart):
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:flutter/foundation.dart';
part 'api_response.freezed.dart';
part 'api_response.g.dart';
#Freezed(genericArgumentFactories: true)
class ApiResponse<T> with _$ApiResponse {
const factory ApiResponse<T>.data(T data) = ApiResponseData;
const factory ApiResponse<T>.error(String message) = ApiResponseError;
factory ApiResponse<T>.fromJson(Map<String, dynamic> json, T Function(Object?) fromJsonT) => _$ApiResponseFromJson(json, fromJsonT);
}
When I build with this command:
flutter pub run build_runner build --delete-conflicting-outputs
I receive the following error:
[INFO] Running build...
[SEVERE] freezed:freezed on lib/models/api_response.dart:
This builder requires Dart inputs without syntax errors.
However, package:psf_provider/models/api_response.dart (or an existing part) contains the following errors.
api_response.dart:9:32: Functions must have an explicit list of parameters.
api_response.dart:9:3: Only redirecting factory constructors can be declared to be 'const'.
api_response.dart:9:32: A function body must be provided.
And 13 more...
Here is my pubspec.yaml file definitions to show the versions I'm using:
environment:
sdk: ">=2.17.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
flutter_hooks: ^0.18.0
hooks_riverpod: ^2.0.0-dev.9
dio: ^4.0.0
flutter_secure_storage: ^4.1.0
easy_localization: ^3.0.1
settings_ui: ^2.0.0
freezed_annotation: ^2.1.0
json_annotation: ^4.6.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.0
build_runner: ^2.2.0
freezed: ^2.1.0+1
json_serializable: ^6.3.1
Any ideas? Thanks for looking!
It looks like the docs are outdated. It should be like the following:
#Freezed(genericArgumentFactories: true)
class ApiResponse<T> with _$ApiResponse<T> {
factory ApiResponse.data(T data) = ApiResponseData;
factory ApiResponse.error(String message) = ApiResponseError;
factory ApiResponse.fromJson(
Map<String, dynamic> json,
T Function(Object? json) fromJsonT,
) =>
_$ApiResponseFromJson<T>(json, fromJsonT);
}

issue with video_player and channel getting null

i got a issue that i try understand how i can fix this
i get this error message about the Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
i have try look into but i have no idea why or how it hapending the full message within the post
i try understand what the origin this happened i try clean the build folder via flutter clean this happend
i try run build runner it may missing something nope i got no idea what seem to be the issue here
[GETX] REPLACE ROUTE /splash
[GETX] NEW ROUTE /login
I/flutter (17459): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (17459): │ #0 LoggerService.info
package:demo_ecom/…/utils/logger_service.dart:19
I/flutter (17459): │ #1 _LoginScreenState.initState
package:demo_ecom/…/login/login_screen.dart:32
I/flutter (17459): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter (17459): │ 💡 Load Login Screen
I/flutter (17459): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
E/flutter (17459): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
E/flutter (17459): #0 VideoPlayerApi.initialize
package:video_player_platform_interface/messages.dart:156
E/flutter (17459): <asynchronous suspension>
E/flutter (17459):
E/flutter (17459): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
E/flutter (17459): #0 VideoPlayerApi.create
package:video_player_platform_interface/messages.dart:181
E/flutter (17459): <asynchronous suspension>
E/flutter (17459): #1 MethodChannelVideoPlayer.create
package:video_player_platform_interface/method_channel_video_player.dart:47
E/flutter (17459): <asynchronous suspension>
E/flutter (17459): #2 VideoPlayerController.initialize
package:video_player/video_player.dart:308
E/flutter (17459): <asynchronous suspension>
E/flutter (17459):
Lost connection to device.
the file that play this vid as follow
import 'dart:async';
import 'package:demo_ecom/common/utils/logger_service.dart';
import 'package:demo_ecom/widgets/login/login_buttons.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:video_player/video_player.dart';
import 'package:demo_ecom/generated/l10n.dart';
import 'login_form.dart';
class LoginScreen extends StatefulWidget {
const LoginScreen({Key key}) : super(key: key);
#override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
final _formKey = GlobalKey<FormState>();
VideoPlayerController _controller;
bool _visible = false;
#override
void initState() {
super.initState();
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
LoggerService().info('Load Login Screen');
_controller = VideoPlayerController.asset('assets/media/login-vid.mp4');
_controller.initialize().then((_) {
_controller.setLooping(true);
Timer(const Duration(milliseconds: 100), () {
setState(() {
_controller.play();
_visible = true;
});
});
});
}
#override
void dispose() {
super.dispose();
if (_controller != null) {
_controller.dispose();
_controller = null;
}
}
Widget _getVideoBackground() {
return AnimatedOpacity(
opacity: _visible ? 1.0 : 0.0,
duration: const Duration(milliseconds: 1000),
child: VideoPlayer(_controller),
);
}
Widget _getBackgroundColor() {
return Container(
color: Colors.black.withAlpha(120),
);
}
Widget _getContent(BuildContext context) {
final splogen_1 = S.of(context).login_slogen;
final splogen_2 = S.of(context).login_slogen2;
return Form(
key: _formKey,
child: ListView(
shrinkWrap: true,
padding: EdgeInsets.all(15.0),
children: <Widget>[
const SizedBox(
height: 40.0,
),
const Image(
image: AssetImage('assets/media/logo.jpg'),
width: 150.0,
),
Text(
splogen_1,
style: TextStyle(color: Colors.white, fontSize: 40),
textAlign: TextAlign.center,
),
Container(
margin: const EdgeInsets.only(left: 30.0, right: 30.0, top: 40.0),
alignment: Alignment.center,
child: Text(
splogen_2,
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white, fontSize: 20),
),
),
LoginForm(),
LoginButtons()
],
),
);
}
#override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: Center(
child: Stack(
children: <Widget>[
_getVideoBackground(),
_getBackgroundColor(),
_getContent(context),
],
),
),
),
);
}
}
the pubspec as follow
name: demo_ecom
description: Demo Ecom App
# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+2
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
# Service locator
provider: ^5.0.0
# Connectivity
data_connection_checker: ^0.3.4
# Logging
logger: ^1.0.0
# Json
json_annotation: ^4.0.1
# firebase
firebase_core: ^0.7.0
firebase_remote_config: "^0.6.0"
firebase_auth: "^0.20.1"
firebase_crashlytics: ^0.4.0+1
#auth social
google_sign_in: "^4.5.1"
flutter_facebook_auth: "^1.0.0"
# localization
intl: ^0.17.0
# ui tools
flutter_password_strength: ^0.1.6
flutter_signin_button: ^1.1.0
animations: ^2.0.0
pull_to_refresh: ^1.6.4
get: ^3.26.0
flutter_easyloading: ^3.0.0
responsive_framework: ^0.1.0
animated_text_kit: ^4.1.0
flutter_spinkit: "^5.0.0"
convex_bottom_bar: ^3.0.0
introduction_screen: ^2.0.0
flash: ^1.5.1
material_floating_search_bar: ^0.3.3
video_player: ^2.0.0
chewie: ^1.0.0
# ui icons
cupertino_icons: ^1.0.2
font_awesome_flutter: ^9.0.0
flutter_icons: ^1.1.0
# misc tools
validators: ^2.0.1
dio: ^3.0.10
pretty_dio_logger: ^1.1.1
jiffy: ^4.0.0
equatable: ^2.0.0
meta: ^1.3.0
stack_trace: ^1.10.0
shared_preferences: ^2.0.5
async: ^2.5.0
# override requirement that conflict will rise if removed
dependency_overrides:
analyzer: ^1.3.0
yaml: ^3.1.0
intl: ^0.17.0
dart_style: ^2.0.0
args: ^2.0.0
glob: ^2.0.0
source_gen: ^1.0.0
logging: ^1.0.1
convert: ^3.0.0
crypto: ^3.0.0
vin_decoder: ^0.1.3
json_annotation: ^4.0.1
font_awesome_flutter: ^9.0.0
dev_dependencies:
# add build runner if not already added
build_runner: ^1.12.2
flutter_test:
sdk: flutter
# Linting
lint: ^1.5.3
# Json
json_serializable: ^4.1.0
# misc tools
mockito: ^5.0.2
flutter_launcher_icons: ^0.9.0
environment_config: ^2.2.5
flutter_rename_app: ^1.0.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
assets:
- assets/fonts/
- assets/media/
- assets/icons/
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-package
# To hide the notification bar, use the fullscreen parameter. Has no affect in web since web
# has no notification bar. Defaults to false.
# NOTE: Unlike Android, iOS will not automatically show the notification bar when the app loads.
# To show the notification bar, add the following code to your Flutter app:
# WidgetsFlutterBinding.ensureInitialized();
# SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom, SystemUiOverlay.top]);
#fullscreen: true
# If you have changed the name(s) of your info.plist file(s), you can specify the filename(s)
# with the info_plist_files parameter. Remove only the # characters in the three lines below,
# do not remove any spaces:
#info_plist_files:
# - 'ios/Runner/Info-Debug.plist'
# - 'ios/Runner/Info-Release.plist'
flutter_intl:
enabled: true
localizely:
project_id: c4305176-c927-4336-80bd-7bbc91f25b3d
flutter_icons:
image_path: 'assets/assets/icons/app_icon.png'
android: true
ios: true
flutter_rename_app:
application_name: Demo Ecom
dart_package_name: demo_ecom
application_id: com.wolberg.pro.demo
bundle_id: com.wolberg.pro.demo
android_package_name: com.wolberg.pro.demo
targets:
$default:
builders:
injectable_generator:injectable_builder:
options:
auto_register: true
# auto registers any class with a name matches the given pattern
class_name_pattern:
"Service$|Repository$"
# auto registers any class inside a file with a
# name matches the given pattern
file_name_pattern: "_service$|_repository$"
#flutter pub run flutter_rename_app
i got no idea what i can do not sure what i did here wrong thanks for the helpers

MissingPluginException(No implementation found for method init on channel plugins.flutter.io/google_sign_in) FLUTTER

I have run flutter doctor and it is reporting no error. The google authentication works fine in IOS but not for android. People tend to say an update does the job but it has not worked for me.It crashes on: _currentUser = await _googleSignIn.signIn();
try {
_currentUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication =
await _currentUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleSignInAuthentication.accessToken,
idToken: googleSignInAuthentication.idToken,
);
final authResult = await _auth.signInWithCredential(credential);
final user = await _auth.currentUser();
}catch(ex){}
The pubspec file is as follows:
name: app
description: A new Flutter project.
publish_to: 'none' # Remove this line if you wish to publish to
pub.dev
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.3
modal_progress_hud: ^0.1.3
http: ^0.12.2
shared_preferences: ^0.5.8
firebase_core: ^0.4.5
firebase_auth: ^0.16.1
cloud_firestore: ^0.13.7
flutter_facebook_login: ^3.0.0
flutter_facebook_auth: ^0.2.3
google_sign_in: ^4.5.1
flutter_signin_button: ^1.0.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
assets:
- assets/images/
fonts:
- family: Questrial
fonts:
- asset: assets/fonts/Questrial-Regular.ttf
weight: 900
This was solved in one of two ways, I moved from master to stable branch and also completed the Facebook authentication. For whatever reason there is some dependency if you use the SignInButtons package so both needed to be implemented.