Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/class/class_account.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class Account {
String? accountHolder;
String? accountAlias;


Account () {
ModelUuid uuid = ModelUuid();
accountId = uuid.randomId;
Expand All @@ -30,7 +31,7 @@ class Account {
'accountalias' : accountAlias,
};

void creatAccount(String userid) async {
void createAccount(String userid) async {
await FirebaseFirestore.instance.collection("accountlist").doc(accountId).set(toJson());
}

Expand Down
6 changes: 6 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:groupsettlement2/view/account_add_page.dart';
import 'package:groupsettlement2/view/account_detail_page.dart';
import 'package:groupsettlement2/view/group_create_page.dart';
import 'package:groupsettlement2/view/group_main_page.dart';
import 'package:groupsettlement2/view/group_select_page.dart';
Expand Down Expand Up @@ -192,6 +193,11 @@ final GoRouter _router = GoRouter(
builder: (context,state) {
return AccountAddPage();
}
),
GoRoute(path: 'AccountDetail',
builder: (context,state) {
return AccountDetailPage();
}
)
]
),
Expand Down
78 changes: 68 additions & 10 deletions lib/view/account_add_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,32 @@ import 'dart:math';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:groupsettlement2/view/shared_basic_widget.dart';
import 'package:groupsettlement2/viewmodel/UserViewModel.dart';

import '../class/class_account.dart';
import '../design_element.dart';

class AccountAddPage extends StatefulWidget {
class AccountAddPage extends ConsumerStatefulWidget {
const AccountAddPage({Key? key}) : super(key: key);

@override
State<AccountAddPage> createState() => _AccountAddPageState();
ConsumerState<AccountAddPage> createState() => _AccountAddPageState();
}

class _AccountAddPageState extends State<AccountAddPage> {
class _AccountAddPageState extends ConsumerState<AccountAddPage> {
final List<String> _banks = ["하나은행","국민은행","외환은행","기업은행","부산은행","신한은행","대구은행"];
String? bank;
String accountNum = ""; String ownerName = ""; String accountNickname = "";
bool _makeFavorite = false;
@override
Widget build(BuildContext context) {
final Size size = MediaQuery.of(context).size;
String accountNum = ""; String ownerName = "";

final provider = ref.watch(userProvider);

return Scaffold(
extendBodyBehindAppBar: true,
appBar: AppBar(
Expand Down Expand Up @@ -81,7 +88,23 @@ class _AccountAddPageState extends State<AccountAddPage> {
color: Colors.black,
),
),
SizedBox(height:size.height*0.12),
SizedBox(height:size.height*0.06),
Text("계좌 별명을 입력해주세요.",
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.w500,
color: Colors.black,
),
),
TextField(
decoration: InputDecoration(
hintText: "계좌 별명",
),
onChanged: (val){
accountNickname = val;
},
),
SizedBox(height:20),
Text("은행사를 선택해주세요.",
style: TextStyle(
fontSize: 18,
Expand All @@ -90,10 +113,9 @@ class _AccountAddPageState extends State<AccountAddPage> {
),
),
Container(
width: size.width*0.9,
width: size.width*0.4,
child: DropdownButton(
isExpanded: true,

value: bank,
items: _banks.map((e)=>
DropdownMenuItem(child: Text(e),value: e,)).toList(),
Expand All @@ -115,6 +137,13 @@ class _AccountAddPageState extends State<AccountAddPage> {
),
),
TextField(
keyboardType: TextInputType.number,
inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.digitsOnly
],
decoration: InputDecoration(
hintText: "계좌번호 ('-'기호를 제외하고 입력\)",
),
onChanged: (val){
accountNum = val;
},
Expand All @@ -128,6 +157,10 @@ class _AccountAddPageState extends State<AccountAddPage> {
),
),
TextField(
controller: TextEditingController()..text = provider.userData.name!,
decoration: InputDecoration(
hintText: "예금주",
),
onChanged: (val){
ownerName = val;
},
Expand All @@ -141,6 +174,9 @@ class _AccountAddPageState extends State<AccountAddPage> {
contentPadding: EdgeInsets.zero,
dense : true,
activeColor: Colors.black,
checkboxShape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(100)
),
onChanged: (val){
setState(() {
_makeFavorite = !_makeFavorite;
Expand All @@ -155,9 +191,31 @@ class _AccountAddPageState extends State<AccountAddPage> {
margin: EdgeInsets.only(bottom: 20),
child: OutlinedButton(
onPressed: (){
print(bank);
print(ownerName);
print(accountNum);
Account account = Account();
try{
account.accountNum = int.parse(accountNum);
}catch(e){
print(e);
ScaffoldMessenger.of(context).clearSnackBars();
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
content: Text(
'계좌번호에는 숫자만 넣어주세요.'),
duration: Duration(seconds: 2),
));
return;
}
account.accountAlias = accountNickname;
account.accountHolder = ownerName;
account.bank = bank;

provider.addAccount(account,_makeFavorite);
Navigator.of(context).pop();
ScaffoldMessenger.of(context).clearSnackBars();
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
content: Text(
'성공적으로 계좌를 등록했어요.'),
duration: Duration(seconds: 2),
));
},
style: OutlinedButton.styleFrom(
backgroundColor: Color(0xFF454545),
Expand Down
Loading