Простая реализация Flutter для регистрации на сервере не получить никакого ответа - PullRequest
0 голосов
/ 04 июня 2019

В Flutter я пытаюсь реализовать простую регистрацию на сервере с помощью api с блоком,

когда я пытаюсь подключиться и отправить данные на сервер для получения ответа, я не получаю error, message

RegisterRepository class:

class RegisterRepository {
  Future<RegisterResponse> register({@required String mobileNumber}) async {
    ModelRegister register = ModelRegister(mobile_number: mobileNumber);

    final response =
        await http.post(Constants.register, body: register.toJson());
    if (response.statusCode == 200) {
      final responseString = jsonDecode(response.body);

      return RegisterResponse.fromJson(responseString);
    }else{
      throw Exception('error on RegisterResponse');
    }
  }
}

регистрационная форма:

TextFormField(
    controller: mobileNumber,
    keyboardType:
        TextInputType.number,
    validator: (String value) {
    },

    textInputAction:
        TextInputAction.next,
    ...
      hintText: "your mobile number",
      ...
)),

 GestureDetector(
   onTap: _onLoginButtonPressed,
   child: Container(
     child: Center(
       child: Text(
         "register",
         ),
     ),
   ),
 ),

 _onLoginButtonPressed() {
    _registerBloc
       .dispatch(RegisterButtonPressed(mobileNumber: mobileNumber.text));
  }

модель регистра:

@JsonSerializable(nullable:false)
class ModelRegister {
  String mobile_number;

  ModelRegister({@required this.mobile_number});

  factory ModelRegister.fromJson(Map<String,dynamic> json)=>_$ModelRegisterFromJson(json);

  Map<String,dynamic> toJson()=>_$ModelRegisterToJson(this);
}

данные запроса к серверу:

'mobile_number' => 'required|string|unique:users|min:11|max:11',

РегистрацияКласс класса:

abstract class RegisterEvent{}

class RegisterButtonPressed extends RegisterEvent{
  String mobileNumber;

  RegisterButtonPressed({@required this.mobileNumber});

  @override
  String toString()=>'register button pressed';
}

RegisterState класс:

abstract class RegisterState {}

class RegisterInitial extends RegisterState {}

class RegisterSuccessful extends RegisterState {
  String message;
  RegisterSuccessful({@required this.message});
}

class RegisterVerificationCode extends RegisterState {}

class RegisterFailure extends RegisterState {
  String message;

  RegisterFailure({@required this.message});
}

class RegisterLoading extends RegisterState {}

Класс RegisterBloc:

class RegisterBloc extends Bloc<RegisterEvent, RegisterState> {
  RegisterRepository registerRepository;

  RegisterBloc({this.registerRepository});

  @override
  Stream<RegisterState> mapEventToState(RegisterEvent event) async* {
    if (event is RegisterButtonPressed) {
      yield RegisterLoading();

      final registerResponse =
          await registerRepository.register(mobileNumber: event.mobileNumber);

      try {
        if (registerResponse == null) {
          yield RegisterFailure(message: 'ERROR');
        } else {
          switch (registerResponse.status) {
            case 1: //wrong http verb
              yield RegisterFailure(message: Strings.httpVerbError);
              break;
        }
      } catch (_) {
        yield RegisterFailure(message: Strings.failToExecuteRegister);
      }
    }
  }

  @override
  RegisterState get initialState => RegisterInitial();
}
...