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 |