728x90

UI 구현 코드는 다른 게시글에 올릴 예정이므로 여기서는 언급하지 않는다.

Flutter Login 처리하는 로직 구현을 했는데 완벽하지는 않다.

아직 배우는 중이라 기록해두고 나중에 제대로 수정하련다.

import 'dart:convert';
 
import 'package:dio/dio.dart';
import 'package:login_ex01/model/user_result.dart';
 
import '../api/api.dart';
import '../model/user_model.dart';
import '../utils/utils.dart';
 
class LoginService extends ILogin {
  @override
  Future<UserResult> login(String keyword, String userID, String password,
      String uID, String mfoneNO) async {
    BaseOptions options = BaseOptions(
      baseUrl: Api.baseUrl,
      connectTimeout: 3000,
      receiveTimeout: 3000,
    );
    Dio dio = Dio(options);
 
    var formData = FormData.fromMap({
      "keyword": keyword,
      "userID": userID,
      "password": password,
      "uID": uID,
      "mfoneNO": mfoneNO
    });
 
    Response response;
 
    response = await dio.post(Api.mLogin, data: formData);
    if (response.statusCode == 200) {
      final body = json.decode(response.data);
      print("${body}");
      return body;
    } else {
      return UserResult(status: "fail", message: "fail", userinfo: null);
    }
  }
}
 
abstract class ILogin {
  Future<UserResult> login(String keyword, String userID, String password,
      String uID, String mfoneNO);
}
 

 

 

class UserResult {
  final String status;
  final String message;
  final UserInfo? userinfo;
 
  UserResult({
    required this.status,
    required this.message,
    required this.userinfo
  });
}
 
class UserInfo {
  final String userNM;
  final String mobileNO;
  final String profileImg;
 
  UserInfo({
    required this.userNM,
    required this.mobileNO,
    required this.profileImg,
  });
 
  factory UserInfo.fromJson(Map<String, dynamic> parsedJson) {
    return UserInfo(
      userNM: parsedJson['userNM'],
      mobileNO: parsedJson['mobileNO'],
      profileImg: parsedJson['profileImg'],
    );
  }
 
  Map<String, dynamic> toJson() =>
      {
        "userNM": userNM,
        "mobileNO": mobileNO,
        "profileImg": profileImg,
      };
 
}
 

 

 

import 'package:flutter/material.dart';
 
class Utils {
  static Future<void> showAlert(BuildContext context, String title, String message) async {
    return showDialog<void>(
      context: context,
      barrierDismissible: false// user must tap button!
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text(title),
          content: SingleChildScrollView(
            child: ListBody(
              children: <Widget>[
                Text(message),
              ],
            ),
          ),
          actions: <Widget>[
            TextButton(
              child: const Text('OK'),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
          ],
        );
      },
    );
  }
 
  static String getPhoneNumber(String phoneNumber) {
    if (phoneNumber.startsWith("82+82")) {
      phoneNumber = phoneNumber.replaceAll("82+82""0");
    }
    return phoneNumber.replaceAll("-""");
  }
}
 

 

 

'Flutter 앱 > Network' 카테고리의 다른 글

ListView.separated 예제  (0) 2023.11.20
Flutter Login Example  (0) 2022.07.25
Session vs JWT  (0) 2022.07.22
Flutter DIO 라이브러리 예제2  (0) 2022.07.02
Flutter DIO 라이브러리 예제 1  (0) 2022.06.29
블로그 이미지

Link2Me

,