TIL

20231026 TIL

김빵그 2023. 10. 26. 18:47

Today 요약 

[] 프로그래머스 코딩테스트 2문제

[] flutter 강의 3강

[] 옵시디언 정리겸 복습

[] 깃 강의 5강


배운 점

1. flutter

1-1 go, push 차이

context.go(); 
context.push();
  • push : 데이터 등을 스택 위에 추가하는 것으로 뒤로가기 버튼을 통해 뒤로 갈 수 있다 (pop 사용 가능)
  • go : 말 그대로 그 경로로 이동하는 것, 경로가 바뀌고 기존 스택에 추가하는 게 아닌 스택 자체를 교체하는 것

1-2 GoRouter 페이지 관리

  • initialLocation : 초기위치 지정할 수 있음
// GoRouter 구성
 final _router = GoRouter ( 
  initialLocation : '/' , 
  Routes : [ 
    GoRoute ( 
      name : 'home' , 
      path : ' /' , 
      builder : ( context, state ) =>  HomeScreen (), 
    ), 
    GoRoute ( 
      name : 'page2' , 
      path : '/page2' , 
      builder : ( context, state ) =>  Page2Screen (), 
    ), 
  ], 
);
  • 매개변수 지정하기
GoRoute ( 
  path : '/:tab(home|setting|picture)' , 
  builder : (context, state) { 
     final id = state.params[ 'id' ] // URL에서 "id" 매개변수 가져오기 
     return  FruitsPage ( id : id); 
  }, 
),
  • 하위경로 추가하기 Goroute 안에 Routes 사용해 하위경로를 추가해줄 수 있다
  • pageBuilder 는 customTransitionPage를 반환하고 customTransitionPage에는 자식이 필요한데 애니메이션 효과를 줄 화면이 된다
GoRoute(
      name: Screen.routeName,
      path: Screen.routeURL,
      builder: (context, state) => const NextScreen(),
      routes: [
        GoRoute(
          name: DetailScreen.routeName,
          path: DetailScreen.routeURL,
          builder: (context, state) {
            final id = state.params["id"]!;
            return DetailScreen(id: id);
          },
        ),
      ],
    ),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
  const begin = Offset(0.0, 1.0);
  const end = Offset.zero;
  final tween = Tween(begin: begin, end: end);
  final offsetAnimation = animation.drive(tween);

  return SlideTransition(
    position: offsetAnimation,
    child: child,
  );
},

 

 

Flutter go_router: The Essential Guide

Go_router is a third-party package for routing in Flutter that aims to provide a more flexible and easy-to-use solution than the default…

medium.com

1-3 SlideTransition class

  • 애니메이션을 사용하여 자식 위젯을 수평 또는 수직으로 이동시키는 데 사용되는 위젯
  • 주로 다른 위젯과 함께 'AnimationController' 및 "Tween"을 사용하여 애니메이션을 제어하고 구성하는데 사용된다
SlideTransition(
  position: Tween<Offset>(
    begin: Offset(-1, 0), // 왼쪽에서 시작
    end: Offset(0, 0),   // 오른쪽으로 슬라이드
  ).animate(animationController),
  child: YourWidget(),
)
  • position : 어디에서 시작하고 어디로 이동하는지 제어 Animation<Offset>

2. git 

2-1 git merge 

  • Git 버전 관리 시스템에서 브랜치를 병합하는데 사용되는 명령어
  • 브랜치란 프로젝트의 특정 기능 또는 수정 작업을 분리하여 개발할 수 있도록 해주는 개념이다
  1. 브랜치를 병합하여 기능을 통합
    1. 기능 개발 또는 버그 수정을 위한 새로운 브랜치를 생성한다
    2. 작업이 완료되면, 해당 브랜치를 기본 브랜치 (master 또는 main)에 병합하려고 할 것
    3. 이 때 git merge 명령을 사용해 브랜치를 병합할 수 있다
  2. 충돌 해결 
    1. 여러 사람이 동시에 같은 파일이 다른 부분을 수정하거나 두 브랜치가 다른 방향으로 변경 사항을 가질때 충돌이 발생할 수 있다
    2. 이런 경우 Git은 자동으로 충돌을 해결하지 못하면, 충돌을 해결하기 위해 수동으로 개입해야 한다
git merge <브랜치이름>
git merge master //현재 작업중인 브랜치에서 marter 브랜치를 병합할 때
git merge --no-ff <브랜치이름> // Fast-Forward 병합을 피하고 항상 병합 커밋을 만들 수 있다
  • Fast-Forward 병합은 기존 브랜치의 커밋 히스토리를 변경하지 않고 단순히 포인터를 이동하는 방식으로 병합되는 것