목록Programing/Flutter (43)
스마트시대

21.1 MVVM Home화면에서 View: 영상 타임라인(스크롤 이벤트 발생시킴) ViewModel: API한테 데이터를 요청하는 부분(View가 페이지가 더 필요해서 페이지를 더 요청해 데이터 받음, 화면으로부터 이벤트를 받고 데이터 수정하고 화면에 알려줘서 데이터의 변화를 반영한다.) Model:영상에 대한 모델을 build한다.(Json으로 이루어짐) 그 다음에 그 영상들을 view한테 넘겨주고 View가 무한 스크롤로 그 영상을 보여줌. Repository: 완전히 별도의 파일, 별도의 클래스로써 유일한 역할은 데이터 저장하는 것(기기 저장소에 저장을 하는 역할) Repository가 firebase와 통신함(View, ViewModel는 firebase와 통신하지 않음) 21.2 VideoPl..

20.1 _noCamera bool _isSelfieMode = false; ---------------- //iOS emulator 돌리기 위해 late final bool _noCamera = kDebugMode && Platform.isIOS; ---------------- //동영상 버튼용 late final AnimationController _buttonAnimationController = AnimationController( enableAudio: false, ); await _cameraController.initialize(); ---------------- //iOS만을 위한 설정 await _cameraController.prepareForVideoRecording(); ------..

iPhone으로 하고 싶으면 여기보고 하기 https://docs.flutter.dev/get-started/install/macos Deploy to iOS devices deverloper mode on 하고 이거 실행 아이디 추가하고 bundle 채우기 이 상태가 되면 재생(플레이)버튼 누르기 이에러 나면 Settings -> General -> Device Management and "trust" 이거도 해줘야 함(소스 어플에 대한 허가) 다른 맥북에서 할 경우 밑의 경우 체크 1. Failed to create provisioning profile. There are no devices registered in your account on the developer website. Select a..

앱이 커지거나 라우팅이 복잡해지면 navigator version2를 쓰는게 추천된다. 특히 웹에서 사용할 경우는navigator version1는 추천되지 않는다. 18.1 GoRouter 이렇게 새로 만들면 웹상에서도 이렇게 표시됨 path 이런식으로도 변경 가능(이게 최신 navigator 사용 방법) 경로로 쓰던 routeName이든 둘다 가능 GoRouter의 Go method에 대해서 pop, push와 다르게 카드 같은 stack구조(이전 화면 위에 다른 화면 올림)를 무시한다. route stack에 관계없이 별도의 위치로 이동시킴 위 스샷과 다르게 백버튼이 없다. 기존 stack과의 관계를 끊고 새로운 stack에서 시작되길 원할 때 유용하다. 18.2 Parameters 퀴리파라메터??..

Navigator version1에서 좀 더 큰 규모의 다양한 애니메이션 구상하고 싶을 때 이와 같은 설정함. 17.1 await push() signup에서 login으로 넘어갈 때 마다 hello가 찍힘 17.2 PageRouteBuilder 이것 저것 커스터마이즈 17.3 pushNamed 좀 더 깔끔하게 경로 만들기 static, pushNamed 2개 추가(총3개) 17.4 pushNam widget property 사용하려면 이렇게 사용 참고 이 설정으로 할 수 있는 것 1.MaterialPageRoute대신에 pushNamed에 URL(key) 쓸 수있다. 2.screen screen사이에 args를 이용해서 데이터를 안전하게 보낼 수 있다.

16.1 Localizations https://api.flutter.dev/flutter/dart-ui/Locale/languageCode.html 여기서 언어 코드 받아오기 아래 에러은 다음과 같이 고치기 16.2 l10n 그러면 이와 같은 파일들이 생긴다. 16.3 AppLocalizations ' placeholder넣은 방법 16.4 Flutter Intl l10n.yaml 지우고 다시 이렇게 이 두 폴더가 생기면 성공 밑에 같이 내용 쓰면 번역 자동 생성됨 한국어 등록 더 간단하게 번역하는 방법 관련 영어 문구 다 해주면 이렇게 자동 생성됨 16.5 Pluralize(복수화) and Select Pluralize(복수화) 설정 select 설정 16.6 Numbers l10n format 단위..

shilf + ⌘ + a 누르면 다크 모드 된다. 15.1 ThemeMode 여기처럼 이미 하드코딩 되어 있는 곳은 여기서 처리하자 아니면 opacity로 처리 제일 좋은 방법은 main.dartp에 색 관련 설정 다 두기 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:tiktok_clone/constants/sizes.dart'; import 'package:tiktok_clone/features/authentication/sign_up_screen.dart'; // phone 돌리지 않게 알리는 방법 void main() async { WidgetsFlutterBinding.e..

14.1 OrientationBuilder builder: (context) => const UsernameScreen(), ), ); } @override Widget build(BuildContext context) { ----------------- //smart폰의 방향을 알려주는 위젯 return OrientationBuilder( builder: (context, orientation) { ----------------- color: Colors.black45, ), textAlign: TextAlign.center, ), Gaps.v40, ----------------------- //correction if .. for는 하나 밖에 못쓴다. if (orientation == Orientat..

13.0 ListWheelScrollView 13.1 AboutListTile 13.2 showDateRangePicker import 'package:flutter/material.dart'; class SettingsScreen extends StatelessWidget { const SettingsScreen({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("Settings"), ), body: ListView( children: [ ListTile( onTap: () async { final date = await showDatePicker( co..

12.1 CustomScrollView import 'package:flutter/material.dart'; class UserProfileScreen extends StatefulWidget { const UserProfileScreen({super.key}); @override State createState() => _UserProfileScreenState(); } class _UserProfileScreenState extends State { @override Widget build(BuildContext context) { return CustomScrollView( //slivers: 사용자들이 스크롤할 수 있는 것들, scrollview의 일부, 위젯 안에 들어감 slivers: [ S..