Skip to content
Merged
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
14 changes: 0 additions & 14 deletions lib/assets/color/color.dart

This file was deleted.

3 changes: 2 additions & 1 deletion lib/ui/alarm/view/alram_main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:schedule_with/assets/colors/color.dart';
import 'package:schedule_with/ui/alarm/view/alram_detail.dart';

import '../../../widget/main_appbar.dart';
import '../../../widget/main_app_bar.dart';
import '../widget/alram_item.dart';

class AlramMain extends StatefulWidget {
Expand All @@ -22,6 +22,7 @@ class _AlramMainState extends State<AlramMain> {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(50),
Expand Down
107 changes: 107 additions & 0 deletions lib/ui/memo/view/memo.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:schedule_with/assets/colors/color.dart';
import 'memo_main.dart';

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MemoScreen(),
);
}
}

class MemoScreen extends StatefulWidget {
@override
_MemoScreenState createState() => _MemoScreenState();
}

class _MemoScreenState extends State<MemoScreen> {
final TextEditingController _titleController = TextEditingController();
final TextEditingController _contentController = TextEditingController();

@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Colors.white,
leading: IconButton(
icon: Icon(CupertinoIcons.back),
onPressed: () => Navigator.pop(context),
),
title: Text(
'메모', style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16)),
centerTitle: true,
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.pop(context);
print('Title: ${_titleController.text}');
print('Content: ${_contentController.text}');
},
child: Text('완료', style: TextStyle(
color: mainOrange, fontWeight: FontWeight.bold, fontSize: 16)),
),
],
),
body: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
Container(
decoration: BoxDecoration(
border: Border(bottom: BorderSide(color: grey2)),
),
child: TextField(
controller: _titleController,
style: TextStyle(color: grey2, fontSize: 16),
decoration: InputDecoration(
hintText: '제목을 입력해 주세요.',
border: InputBorder.none,
),
),
),
Expanded(
child: TextField(
controller: _contentController,
style: TextStyle(color: grey2, fontSize: 14),
decoration: InputDecoration(
hintText: '내용을 입력해 주세요.',
border: InputBorder.none,
),
keyboardType: TextInputType.multiline,
maxLines: null,
),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
// 버튼이 눌렸을 때의 동작 정의
},
backgroundColor: mainOrange,
child: SvgPicture.asset(
"lib/assets/icon/icon_camera.svg",
color: Colors.white,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30)),
),
);
}
}

class CreateMemo {
String content;
DateTime date;

CreateMemo({required this.content, required this.date});
}
69 changes: 69 additions & 0 deletions lib/ui/memo/view/memo_item.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import 'package:flutter/material.dart';
import 'package:schedule_with/assets/colors/color.dart';

class Memo {
String date;
String title;
String body;
bool hasImage;
bool isPublic;

Memo({required this.date, required this.title, required this.body, this.hasImage = false, this.isPublic = true});
}

class MemoItem extends StatelessWidget {
final Memo memo;

const MemoItem({Key? key, required this.memo}) : super(key: key);

@override
Widget build(BuildContext context) {
Color statusColor = memo.isPublic ? mainOrange : mainBrown;
return Container(
padding: EdgeInsets.only(left: 16, top: 10, right: 16, bottom: 15),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
// 날짜 타이틀
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(memo.date, style: TextStyle(fontSize: 10, color: grey4)),
Text(memo.title, style: TextStyle(
fontSize: 14, fontWeight: FontWeight.bold)),
],
),
// 공개/비공개
Container(
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
border: Border.all(color: statusColor, width: 1),
),
child: Text(memo.isPublic ? '공개' : '비공개',
style: TextStyle(color: statusColor, fontSize: 10)),
),
],
),
SizedBox(height: 6),
Text(
memo.body,
style: TextStyle(fontSize: 12),
maxLines: memo.hasImage ? 2 : 4,
overflow: TextOverflow.ellipsis,
),
// Image Container if available
if (memo.hasImage) Container(
width: 70,
height: 70,
margin: EdgeInsets.only(top: 10),
color: Colors.pink[300],
),
],
),
);
}
}
122 changes: 122 additions & 0 deletions lib/ui/memo/view/memo_main.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:schedule_with/assets/colors/color.dart';
import 'package:schedule_with/ui/memo/view/paymemo.dart';
import '../../../widget/main_tab_bar.dart';
import 'memo.dart';
import 'paymemolist.dart';
import 'memolist.dart';

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MemoMainScreen(),
);
}
}

class MemoMainScreen extends StatefulWidget {
const MemoMainScreen({super.key});
@override
_MainScreenState createState() => _MainScreenState();
}

class _MainScreenState extends State<MemoMainScreen> with SingleTickerProviderStateMixin {
late TabController _tabController;
bool isFABOpen = false;

@override
void initState() {
super.initState();
_tabController = TabController(length: 3, vsync: this, initialIndex: 2);
}

@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Column(
children: [
Expanded(
child: MemoListView(),
),
Expanded(
child: PayMemoListView(),
),
],
),
floatingActionButton: buildExpandableFAB(),
);
}

Widget buildExpandableFAB() {
return Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
if (isFABOpen) ...[
SizedBox(
child: FloatingActionButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PayMemoScreen()),
);
},
backgroundColor: mainBrown,
child: Padding(
padding: const EdgeInsets.only(left: 0, bottom: 0),
child: SvgPicture.asset("lib/assets/icon/icon_paymemo_add.svg",
color: Colors.white),
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30)),
),
),
SizedBox(height: 10),
SizedBox(
child: FloatingActionButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => MemoScreen()),
);
},
backgroundColor: mainBrown,
child: Padding(
// 아이콘의 위치 조정
padding: const EdgeInsets.only(left: 2, bottom: 1.5),
child: SvgPicture.asset(
"lib/assets/icon/icon_memo_add.svg", color: Colors.white),
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30)),
),
),
SizedBox(height: 10),
],
SizedBox(
child: FloatingActionButton(
onPressed: toggleFAB,
backgroundColor: mainOrange,
child: Icon(
isFABOpen ? Icons.close : Icons.add, color: Colors.white),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30)),
),
),
],
);
}

void toggleFAB() {
setState(() {
isFABOpen = !isFABOpen;
});
}

}
Loading