


* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
import '/flutter_flow/flutter_flow_icon_button.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/flutter_flow/flutter_flow_widgets.dart';
import 'dart:ui';
import 'package:easy_debounce/easy_debounce.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';
import 'history_model.dart';
export 'history_model.dart';
class HistoryWidget extends StatefulWidget {
const HistoryWidget({super.key});
@override
State<HistoryWidget> createState() => _HistoryWidgetState();
}
class _HistoryWidgetState extends State<HistoryWidget> {
late HistoryModel _model;
final scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState() {
super.initState();
_model = createModel(context, () => HistoryModel());
_model.textController ??= TextEditingController();
_model.textFieldFocusNode ??= FocusNode();
}
@override
void dispose() {
_model.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
FocusScope.of(context).unfocus();
FocusManager.instance.primaryFocus?.unfocus();
},
child: Scaffold(
key: scaffoldKey,
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
appBar: AppBar(
backgroundColor: FlutterFlowTheme.of(context).primary,
automaticallyImplyLeading: false,
title: Text(
'History',
style: FlutterFlowTheme.of(context).headlineMedium.override(
fontFamily: 'Inter Tight',
color: Colors.white,
fontSize: 22,
letterSpacing: 0.0,
),
),
actions: [],
centerTitle: false,
elevation: 2,
),
body: SafeArea(
top: true,
child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(8, 32, 8, 0),
child: Container(
width: 400,
child: TextFormField(
controller: _model.textController,
focusNode: _model.textFieldFocusNode,
onChanged: (_) => EasyDebounce.debounce(
'_model.textController',
Duration(milliseconds: 2000),
() => safeSetState(() {}),
),
autofocus: false,
obscureText: false,
decoration: InputDecoration(
isDense: true,
labelText: '검색어 입력',
labelStyle:
FlutterFlowTheme.of(context).labelMedium.override(
fontFamily: 'Inter',
letterSpacing: 0.0,
),
hintStyle:
FlutterFlowTheme.of(context).labelMedium.override(
fontFamily: 'Inter',
letterSpacing: 0.0,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).alternate,
width: 2,
),
borderRadius: BorderRadius.circular(8),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Color(0x00000000),
width: 2,
),
borderRadius: BorderRadius.circular(8),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 2,
),
borderRadius: BorderRadius.circular(8),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 2,
),
borderRadius: BorderRadius.circular(8),
),
filled: true,
fillColor:
FlutterFlowTheme.of(context).secondaryBackground,
prefixIcon: Icon(
Icons.search,
size: 24,
),
suffixIcon: _model.textController!.text.isNotEmpty
? InkWell(
onTap: () async {
_model.textController?.clear();
safeSetState(() {});
},
child: Icon(
Icons.clear,
size: 24,
),
)
: null,
),
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Inter',
letterSpacing: 0.0,
),
cursorColor: FlutterFlowTheme.of(context).primaryText,
validator:
_model.textControllerValidator.asValidator(context),
),
),
),
Divider(
thickness: 2,
color: FlutterFlowTheme.of(context).secondary,
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(8, 0, 8, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 8),
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0, 0, 8, 0),
child: Icon(
Icons.mail,
color: FlutterFlowTheme.of(context).primary,
size: 24,
),
),
Text(
'A열과 B열의 값을 차례대로 곱한 뒤 더해주는 수식',
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
letterSpacing: 0.0,
),
),
],
),
),
Text(
'=SUMPRODUCT(A:A, B:B)',
style:
FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Inter',
color: FlutterFlowTheme.of(context).primary,
letterSpacing: 0.0,
),
),
],
),
Column(
mainAxisSize: MainAxisSize.max,
children: [
Text(
'1/24',
style:
FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Inter',
letterSpacing: 0.0,
),
),
FlutterFlowIconButton(
borderRadius: 8,
buttonSize: 40,
icon: Icon(
Icons.delete_sharp,
size: 24,
),
onPressed: () {
print('IconButton pressed ...');
},
),
],
),
],
),
),
Divider(
thickness: 2,
color: FlutterFlowTheme.of(context).secondary,
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(8, 0, 8, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 8),
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0, 0, 8, 0),
child: Icon(
Icons.mail,
color: FlutterFlowTheme.of(context).primary,
size: 24,
),
),
Text(
'A와 B열의 값을 더해줘',
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
letterSpacing: 0.0,
),
),
],
),
),
Text(
'=SUM(A1:B1)',
style:
FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Inter',
color: FlutterFlowTheme.of(context).primary,
letterSpacing: 0.0,
),
),
],
),
Column(
mainAxisSize: MainAxisSize.max,
children: [
Text(
'1/24',
style:
FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Inter',
letterSpacing: 0.0,
),
),
FlutterFlowIconButton(
borderRadius: 8,
buttonSize: 40,
icon: Icon(
Icons.delete_sharp,
size: 24,
),
onPressed: () {
print('IconButton pressed ...');
},
),
],
),
],
),
),
Divider(
thickness: 2,
color: FlutterFlowTheme.of(context).secondary,
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(8, 0, 8, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 8),
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0, 0, 8, 0),
child: Icon(
Icons.mail,
color: FlutterFlowTheme.of(context).primary,
size: 24,
),
),
Text(
'A와 B열을 합쳐줘',
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
letterSpacing: 0.0,
),
),
],
),
),
Text(
'=A1&\" \"&B1',
style:
FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Inter',
color: FlutterFlowTheme.of(context).primary,
letterSpacing: 0.0,
),
),
],
),
Column(
mainAxisSize: MainAxisSize.max,
children: [
Text(
'1/24',
style:
FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Inter',
letterSpacing: 0.0,
),
),
FlutterFlowIconButton(
borderRadius: 8,
buttonSize: 40,
icon: Icon(
Icons.delete_sharp,
size: 24,
),
onPressed: () {
print('IconButton pressed ...');
},
),
],
),
],
),
),
],
),
),
),
);
}
}
