【问题标题】:Flutter, Android application(random error)Flutter,Android应用程序(随机错误)
【发布时间】:2020-10-21 12:51:28
【问题描述】:

最近,我们推出了一个 android 应用程序 (https://play.google.com/store/apps/details?id=com.appbakerz.paaniwaala),但对于某些随机用户,我们在我们的服务器上没有收到任何请求。

例如,我们的第一个屏幕是登录屏幕,用户输入他的手机号码。在这个屏幕上,当一些用户输入他们的电话号码时,服务器没有命中。

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:paaniwaala/auth/signin_sheet.dart';
import 'package:paaniwaala/blocks/auth_block.dart';
import 'package:paaniwaala/blocks/notification_block.dart';
import 'package:paaniwaala/models/user.dart';
import 'package:provider/provider.dart';
import 'package:paaniwaala/localizations.dart';

class SignIn extends StatefulWidget {
  @override
  _SignInState createState() => _SignInState();
}

class _SignInState extends State<SignIn> {
  final _formKey = GlobalKey<FormState>();
  final UserCredential userCredential = UserCredential();

  NotificationBlock notify = NotificationBlock();

  @override
  void initState() {
    super.initState();
    notify.registor();
  }

  @override
  void dispose() {
    super.dispose();
  }

  // @override
  // Widget build(BuildContext context) {
  //   return Scaffold(
  //     backgroundColor: Colors.white,
  //     body: ListView(
  //       children: [
  //         Container(
  //           height: 300,
  //           decoration: BoxDecoration(
  //               image: DecorationImage(
  //                   image: AssetImage("assets/images/loginImage.jpeg"))),
  //           child: Text('data'),
  //         )
  //       ],
  //     ),
  //   );
  // }
  @override
  Widget build(BuildContext context) {
    AuthBlock auth = Provider.of<AuthBlock>(context);
    var submitButton = RaisedButton(
      color: Theme.of(context).primaryColor,
      textColor: Colors.white,
      child: auth.loading && auth.loadingType == 'login'
          ? CircularProgressIndicator(
              valueColor: AlwaysStoppedAnimation<Color>(Colors.white),
            )
          : Text(
              AppLocalizations.of(context).translate('SIGN_IN'),
              style: TextStyle(fontWeight: FontWeight.bold),
            ),
      onPressed: () async {
        userCredential.devise_id = notify.token;
        if (_formKey.currentState.validate() && !auth.loading) {
          showModalBottomSheet(
            context: context,
            builder: (context) {
              return WillPopScope(
                  child: SigninSheet(), onWillPop: () async => false);
            },
            isDismissible: false,
          );
          auth.isMobileLogin = true;
          _formKey.currentState.save();
          await auth.login(userCredential, context);
        }
      },
    );
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      crossAxisAlignment: CrossAxisAlignment.center,
      children: <Widget>[
        // Container(
        //   height: 320.0,
        //   margin: EdgeInsets.only(left: 30.0, right: 30.0),
        //   child: Image(
        //     image: AssetImage("assets/images/signin_page_logo.png"),
        //   ),
        // ),
        Container(
          margin: EdgeInsets.all(10.0),
          child: Text(
            'Note: You may need to wait upto 1 minute to get OTP.',
            style: TextStyle(color: Colors.red, fontSize: 16.0),
          ),
        ),
        Container(
          child: Form(
            key: _formKey,
            child: Padding(
              padding: const EdgeInsets.only(left: 15.0, right: 15.0),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Padding(
                    padding: const EdgeInsets.only(bottom: 10.0),
                    child: TextFormField(
                      style: TextStyle(
                          fontWeight: FontWeight.bold, fontSize: 22.0),
                      autofocus: true,
                      inputFormatters: [LengthLimitingTextInputFormatter(10)],
                      maxLength: 10,
                      keyboardType: TextInputType.phone,
                      validator: (value) {
                        String pattern = r'^[1-9][0-9]{9}$';
                        RegExp regExp = new RegExp(pattern);
                        value = value.trim();
                        value = value.length > 10
                            ? value.substring(0, value.length - 1)
                            : value;
                        if (value.isEmpty) {
                          return 'Please Enter Mobile Number';
                        } else if (!regExp.hasMatch(value)) {
                          return 'Please Enter Valid Mobile Number';
                        }

                        return null;
                      },
                      onSaved: (value) {
                        setState(() {
                          userCredential.usernameOrEmail = value;
                        });
                      },
                      onFieldSubmitted: (_) {
                        FocusScope.of(context).requestFocus(new FocusNode());
                        submitButton.onPressed();
                      },
                      decoration: InputDecoration(
                        hintText: 'Enter Mobile Number',
                        labelText: AppLocalizations.of(context)
                            .translate('MOBILE_NUMBER'),
                      ),
                    ),
                  ),
                  Padding(
                    padding: const EdgeInsets.only(top: 25.0),
                    child: SizedBox(
                      width: double.infinity,
                      height: 50,
                      child: submitButton,
                    ),
                  )
                ],
              ),
            ),
          ),
        ),
      ],
    );
  }
}

有人可以帮忙或有什么建议来调试吗?

【问题讨论】:

标签: android flutter


【解决方案1】:

似乎问题在于在 onFiledSubmitted 中调用 submitButton 的 onPressed。您可以尝试删除 onFieldSubmitted 属性。您的表单验证可能无法正常工作。

      //onFieldSubmitted: (_) {
      //              FocusScope.of(context).requestFocus(new FocusNode());
      //              submitButton.onPressed();
      //            },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多