thumbnail [다트] 리스트 중복 제거 리스트에서 중복을 제거하는 방법이야 여러가지가 있겠지만, 아래 방법은 어떨까? toSet으로 중복을 제거하고, 다시 리스트로 바꿔주는 방법이다. List listSample = [1, 2, 2, 3, 4, 4, 23, 24, 324, 2353, 12, 1, 12]; main() { Set setSample = listSample.toSet(); print(setSample); // Console >> {1, 2, 3, 4, 23, 24, 324, 2353, 12} List setNewList = []; setNewList.addAll(setSample); print(setNewList); // Console >> [1, 2, 3, 4, 23, 24, 324, 2353, 12] print('newList\.. 2023. 7. 14.
thumbnail [플러터] Map 정렬하기 아래와 같은 dblist Map이 있다고 하면, Mapint, Listdynamic>> dblist = {  0: [1, '가', 8, '나'],  1: [2, '마', 4, '바'],  2: [6, '자', 1, '치'],};  Map의 구성은 아래와 같다. print(dblist);//console >> {0: [1, 가, 8, 나], 1: [2, 마, 4, 바], 2: [6, 자, 1, 치]}  정렬을 위해 Key값을 리스트로 추출하는 방법은 아래와 같다. // 키 값을 리스트로 추출var sortedKeys = dblist.keys.toList(growable: false);print(sortedKeys);//console >> [0, 1, 2]  LinkedHashMap 사용을 위해서는 coll.. 2023. 7. 12.
thumbnail [플러터] 구글 Sheets 를 DB로 사용해서 갤러리 만들기 #2 갤러리앱얼마전에 갤러리앱을 만들고 있다는 글을 썼었다.   [플러터] 구글 Sheets 를 DB로 사용해서 갤러리 만들기 #1플러터와 DB 이미지 갤러리라면, DB를 구성하고 이미지를 저장하고 관리하는 것이 여간 귀찮은 일이 아닐 것이다.(해본 적이 없어서 추정) 🤭🤭🤭🤭 Firebase로 youtube 리스트를 구성한 적이 있었sunnybong.tistory.com 이번엔 만드는 과정은 아니고, 만들다 보니 debug 모드에서는 아무 문제없지만, release모드에서는 구글Sheets에 호출한 데이터가 불러와지지 않는다. - release 모드인만큼 API키를 별도로 생성해야하는 줄 알고, SHA-1까지 생성은 했으나, 음... 입력할 곳이 없다.- playstore에 출고할 때처럼, 개발자 k.. 2023. 7. 12.
thumbnail [플러터] .json theme 파일사용하기 main.dart 파일에서 패키지를 임포트 해준다.json_theme.dart는 외부 패키지이므로 pubspec.yaml 파일에 미리 등록을 해줘야 한다. import 'package:flutter/material.dart';import 'dart:convert'; // for jsonDecodeimport 'package:flutter/services.dart'; // for rootBundleimport 'package:json_theme/json_theme.dart'; // for theme decoder  assets 폴더안에 theme.json 파일을 저장해주고, 아래와 같이 불러온다. void main() async {  // 테마데이터 실행 _ from json_theme, asset  Wi.. 2023. 7. 11.
thumbnail [플러터] widget : Wrap column / row 대신사용column 이나, row widget을 사용할 때, 내부 widget들의 사이즈가 screen size를 넘게 되면, 오류가 발생하는데, 대신 Wrap 위젯을 사용하면, 자동으로 하단으로 내려오게 된다.    기본적인 기능인 것 같은데, 딱히 쓸일이 있을지는 모르겠다. Center(  child: Wrap(    spacing: 10, // horizontal spacing    runSpacing: 10, // vertical spacing    children: [      textFieldWidget(),      textFieldWidget(),      textFieldWidget(),      textFieldWidget(),      textFieldWidge.. 2023. 7. 6.
thumbnail [플러터] package : fluttertoast 생각보다 처리하기 귀찮은 toast sample을 미리 작성해둔다.    Toast 변수 선언, initState에서 초기화초기화를 해주고, 현재 context를 연결해준다. late FToast fToast;   void initState() {    super.initState();    fToast = FToast();    fToast.init(context);  }   toast 디자인 method구지 이럴필요가 있을까 싶지만, toast custom 디자인을 만들어 둘 수 있는게 더 낫겠지? _showToast() {    Widget toast = Container(      padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 1.. 2023. 6. 26.
thumbnail [깃허브] Make sure you configure your "user.name".... 에러 간만에, 오래된 repository에 들어가보니, 이런 에러가 난다. Make sure you configure your "user.name" and "user.email" in git. 아무래도 github의 메일 계정을 추가하는 과정에서 primary 메일 주소가 변경되서인걸 아닐까 싶지만, 정확하게 모르겠다. 문제는 어디서 어떻게 수정을 해줘야 할지 모르겠다는 것이다. 뭐... 잠시 검색을 해보니, 아래 명령어로 해결이 가능한가 보다. 아 터미널 명령어는 너무 귀찬하.. git config --global user.name "name" git config --global user.email "email address" 끝. 2023. 6. 24.
thumbnail [파이썬] 게시판에서 파일 이름 규칙에 따라 일괄 다운로드 게시판에서 몇백개의 강의가 올라와 있다고 하자. 해당 동영상 파일을 다운받으려면 게시판을 다 뒤져야 하겠지만, 친절하게 serialize한 규칙으로 첨부 파일이름이 되어있는 게시판이 있다고 하면, 한꺼번에 다운 받을 수 있을 것이다. import os import requests for i in range(0, 91): # file name serial rule default_filename = "ET000" file_extension = ".mp4" file_name = default_filename + str(i) + file_extension url = "https://xxx.com/folder/" + file_name # folder name to save file download_path = ".. 2023. 6. 23.
thumbnail [다트] dart 3.0 - records 괄호 지옥 개발 전공자가 아니면, 괄호에 익숙하지 못한데, 다트 3.0의 records는... 괄호 지옥이다. void main() {  var (name, age) = userInfo(json);  print(name);  print(age.isEven);  if (age.isEven) {    print("even");  } else {    print('odd');  }}(String, int) userInfo(MapString, dynamic> json) {  return (json['name'] as String, json['age'] as int);}final json = String, dynamic>{  'name': 'Dash',  'age': 10,  'color': 'blue',};// log >.. 2023. 5. 26.
thumbnail [플러터] 구글 Sheets 를 DB로 사용해서 갤러리 만들기 #1 플러터와 DB이미지 갤러리라면, DB를 구성하고 이미지를 저장하고 관리하는 것이 여간 귀찮은 일이 아닐 것이다.(해본 적이 없어서 추정) 🤭🤭🤭🤭Firebase로 youtube 리스트를 구성한 적이 있었는데, 모바일로 경로를 등록하는 것도 firebase에서 수기로 입력하는 것도 상당히 귀찮다. 그래서, 엑셀처럼 구글 Sheets 로 테이블을 구성하여, DB로 사용하는 방법을 구성해 보았다. GCP/Sheets 작업당연히, GCP 프로젝트를 생성해야한다. 꽤 오래전에 만들어 놓은터라... 무슨 난관이 있었는지 기억나지 않는다.   서비스 계정을 생성한다. 누르기만 하면 된다.   구글 Sheets의 원하는 프로젝트에 들어가서, share 에다가 서비스 계정을 공유해준다. 서비스 계정이 뭔가 했더니.. 2023. 5. 11.
thumbnail [플러터] Rive animation 실행은 해보자 #2 Rive, StateMachine Package의 기능을 배우는 것과 함께, Rive는 자체 그래픽 툴까지 익혀야하는데, 상호작용하는 방법까지 배워야하므로, 진입장벽이 낮은편도, 결과물이 마음에 드는 편도 아니다. Rive로 페이지 indicator를 만든다면... 생각보다 상당히 귀찮은 작업들이 있다. 첫 페이지는 floating action button을 클릭하면, 랜덤하게 애니메이션이 재생되도록 했다. 두번째 페이지로 appbar의 화살표를 통해 이동하면, 페이지 슬라이드에 따라 애니메이션이 재생되도록 했다. 겁나 빠르게 누르면, 애니메이션이.... 멈칫한다. 이 브라우저는 iframe을 지원하지 않습니다 음... 페이지 사이즈가 좀 작아서 감동이 크지는 않다. 끝. 2023. 4. 24.
thumbnail [플러터] 자질구래한 methods PageView web에서 마우스로 swipe하기MaterialApp에서 scrollBehavior를 호출 class PreSetting extends StatelessWidget {  const PreSetting({super.key});  @override  Widget build(BuildContext context) {    return MultiProvider(      providers: [        ChangeNotifierProvider(create: ((context) => MyData())),      ],      child: MaterialApp(        debugShowCheckedModeBanner: false,        scrollBehavior: AppScroll.. 2023. 4. 20.