인프런 커뮤니티 질문&답변

Kyung-il In님의 프로필 이미지
Kyung-il In

작성한 질문수

Flutter 앱 개발 기초

예제를 하다 오류가 발생되어 문의합니다.

해결된 질문

작성

·

476

2

아래 코드를 복사 붙이기 하니깐 오류가 나네요...어떻게 수정해야하나요?

추가하기 버튼을 누를 때, textController를 이용하여 TextField에 입력된 가져와 보도록 하겠습니다. 코드스니펫을 복사해 132번째 라인 맨 뒤에 추가해 주세요.

 

String job = textController.text; // 값 가져오기

print(job);

답변 2

1

DevStory님의 프로필 이미지
DevStory
지식공유자

오픈 카카오톡으로 답변드렸지만, 혹시라도 동일한 문제를 겪으실 분들을 위해 추가로 답변드립니다.

onPressed에 소괄호() 안에 있는 코드를 중괄호{}로 옮겨주시면 됩니다.

1

DevStory님의 프로필 이미지
DevStory
지식공유자

안녕하세요.

올려주신 내용만으론 어떤 문제가 있는지 알 수 없어서, 에러 로그와 작성하신 소스 코드를 붙여주시면 확인 후 답변 드리도록 하겠습니다.

보다 신속한 답변을 원하시면 오픈 카카오톡으로 문의 주세요.

감사합니다.

Kyung-il In님의 프로필 이미지
Kyung-il In
질문자

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: HomePage(),
    );
  }
}

/// 홈 페이지
class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  List<String> bucketList = ['여행가기']; // 전체 버킷리스트 목록

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("버킷 리스트"),
      ),
      body: bucketList.isEmpty
          ? Center(child: Text("버킷 리스트를 작성해 주세요."))
          : ListView.builder(
              itemCount: bucketList.length, // bucketList 개수 만큼 보여주기
              itemBuilder: (context, index) {
                String bucket = bucketList[index]; // index에 해당하는 bucket 가져오기
                return ListTile(
                  // 버킷 리스트 할 일
                  title: Text(
                    bucket,
                    style: TextStyle(
                      fontSize: 24,
                    ),
                  ),
                  // 삭제 아이콘 버튼
                  trailing: IconButton(
                    icon: Icon(CupertinoIcons.delete),
                    onPressed: () {
                      // 삭제 버튼 클릭시
                      print('$bucket : 삭제하기');
                    },
                  ),
                  onTap: () {
                    // 아이템 클릭시
                    print('$bucket : 클릭 됨');
                  },
                );
              },
            ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: () {
          // + 버튼 클릭시 버킷 생성 페이지로 이동
          Navigator.push(
            context,
            MaterialPageRoute(builder: (_) => CreatePage()),
          );
        },
      ),
    );
  }
}

/// 버킷 생성 페이지
class CreatePage extends StatefulWidget {
  const CreatePage({Key? key}) : super(key: key);

  @override
  State<CreatePage> createState() => _CreatePageState();
}

class _CreatePageState extends State<CreatePage> {
  // TextField의 값을 가져올 때 사용합니다.
  TextEditingController textController =  TextEditingController();
  String? error;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("버킷리스트 작성"),
        // 뒤로가기 버튼
        leading: IconButton(
          icon: Icon(CupertinoIcons.chevron_back),
          onPressed: () {
            Navigator.pop(context);
          },
        ),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          children: [
            // 텍스트 입력창
            TextField(
              controller: textController,
              autofocus: true,
              decoration: InputDecoration(
                hintText: "하고 싶은 일을 입력하세요",
                errorText: error,
              ),
            ),
            SizedBox(height: 32),
            // 추가하기 버튼
            SizedBox(
              width: double.infinity,
              height: 48,
              child: ElevatedButton(
                child: Text(
                  "추가하기",
                  style: TextStyle(
                    fontSize: 18,
                  ),
                ),
                onPressed: (
                  // 추가하기 버튼 클릭시 
                  // String job = textController.text; // 값 가져오기
                  //print(job);
                  String job = textController.text
                ) {
                  // 추가하기 버튼 클릭시
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}
Kyung-il In님의 프로필 이미지
Kyung-il In
질문자

image

Kyung-il In님의 프로필 이미지
Kyung-il In

작성한 질문수

질문하기