• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Flutter 게시판 null check 질문

null check 질문

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #62929

    김윤재
    참가자
    import 'package:flutter/material.dart';
    import 'package:permission_handler/permission_handler.dart';
    import 'package:contacts_service/contacts_service.dart';
    void main()
    {
      runApp(MaterialApp(
        home: MyApp(),
      ));
    }
    class MyApp extends StatefulWidget {
      const MyApp({Key? key}) : super(key: key);
      @override
      State<MyApp> createState() => _MyAppState();
    }
    class _MyAppState extends State<MyApp> {
      getPermission() async {
        var status = await Permission.contacts.status;
        if (status.isGranted) {
          print('허락됨');
          var contacts = await ContactsService.getContacts();
          setState(() {
            name=contacts;
          });
        } else if (status.isDenied) {
          print('거절됨');
          Permission.contacts.request();
        }
      }
      var name=[];
      addName(a){
        setState(() {
          name.add(a);
        });
      }
    
    
    
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          floatingActionButton: FloatingActionButton(
            child: Text('button'),
            onPressed: (){
              showDialog(context: context, builder: (context){
                return DialogUI(addName:addName);
              });
            },
          ),
          appBar: AppBar(
            title: Text('연락처',style: TextStyle(fontSize: 30)),actions: [
              IconButton(onPressed: (){
                getPermission();
              }, icon: Icon(Icons.contacts))
          ],
          ),
          body: ListView.builder(
              itemCount: name.length,
              itemBuilder: (c,i){
                return ListTile(
                  leading: Text((i+1).toString()),
                  title: Text(name[i].displayName ?? '이름없음'),
                  trailing: ElevatedButton(
                    child: Text('삭제'),
                    onPressed: (){
                      setState(() {
                        name.removeAt(i);
                      });
                    },
                  )
                );
              }),
        );
      }
    }
    class DialogUI extends StatelessWidget {
       DialogUI({Key? key,this.addName}) : super(key: key);
       final addName;
       var inputData=TextEditingController();
      @override
      Widget build(BuildContext context) {
        return Dialog(
          child: SizedBox(
            width: 300,
            height: 300,
            child: Column(
              children: [
                TextField(controller: inputData),
                TextButton(onPressed: (){
                  if(inputData.text=='') {
                    Navigator.pop(context);
                  }
                  else {
                    Navigator.pop(context);
                    var newPerson = Contact();
                    newPerson.givenName = inputData.text;
                    ContactsService.addContact(newPerson);
                    addName(newPerson);
                  }
                }, child: Text('완료')),
                TextButton(onPressed: (){
                  Navigator.pop(context);
                }, child: Text('취소'))
              ],
            ),
          ),
        );
      }
    }
    
    이코드에서 appbar에있는 연락처불러오기 버튼 눌렀을때 전화번호 저장이 되어있어도 1번은 무조건 null이 나오는데 왜이런건가요 ??
    #62962

    codingapple
    키 마스터
    가끔 그렇습니다 null이면 보여주지말라고 if문같은거 씁시다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠