Flutter로 가이드 만들기
지도
언뜻 보는 이용자들이 앱에 대한 이해도가 없기 때문에 멘토링(튜토리얼)이 있으면 친절하다.
그래서 이번에는 Flutter에서 쉽게 지도할 수 있는 프로그램 라이브러리를 찾았습니다. 소개해 드리겠습니다.
flutter_intro
flutter_intro
는 Fluter에서 가이드를 만드는 데 편리한 프로그램 라이브러리입니다.애니메이션을 설치할 수 있기 때문에 추천합니다.위 링크에서 설치 방법 등을 확인하십시오.
샘플 코드
이번에는 flutter_intro의 Example의 코드부터 해설을 시작하겠습니다.
묵인
고급
사용자 정의
Intro
가이드를 재생할 대상입니다.안내 단계 및 안내를 위한 Builder를 구성합니다.
Default Theme
기본적으로 다음과 같습니다.
각 단계의 텍스트를
texts
에 설정합니다.intro = Intro(
stepCount: 4,
maskClosable: true,
onHighlightWidgetTap: (introStatus) {
print(introStatus);
},
/// use defaultTheme
widgetBuilder: StepWidgetBuilder.useDefaultTheme(
texts: [
'Hello, I\'m Flutter Intro.',
'I can help you quickly implement the Step By Step guide in the Flutter project.',
'My usage is also very simple, you can quickly learn and use it through example and api documentation.',
'In order to quickly implement the guidance, I also provide a set of out-of-the-box themes, I wish you all a happy use, goodbye!',
],
buttonTextBuilder: (currPage, totalPage) {
return currPage < totalPage - 1 ? 'Next' : 'Finish';
},
),
);
intro.setStepConfig(
0,
borderRadius: BorderRadius.circular(64),
);
Advanced Theme
고급이면 아래와 같다.
각 단계별 Widget을 사용자 정의할 수 있습니다.
intro = Intro(
stepCount: 4,
maskClosable: false,
onHighlightWidgetTap: (introStatus) {
print(introStatus);
},
/// useAdvancedTheme
widgetBuilder: StepWidgetBuilder.useAdvancedTheme(
widgetBuilder: (params) {
return Container(
decoration: BoxDecoration(
color: Colors.red.withOpacity(.6),
),
child: Column(
children: [
Text(
'${params.currentStepIndex + 1}/${params.stepCount}',
style: TextStyle(
color: Colors.green,
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
Row(
children: [
ElevatedButton(
onPressed: params.onPrev,
child: Text('Prev'),
),
ElevatedButton(
onPressed: params.onNext,
child: Text('Next'),
),
ElevatedButton(
onPressed: params.onFinish,
child: Text('Finish'),
),
],
),
],
),
);
},
),
);
intro.setStepConfig(
0,
borderRadius: BorderRadius.circular(64),
);
Custom Theme
아마도 맞춤형 제작이 가장 자주 사용하는 것 같다.
자체 Builder 함수를 사용하여 수행합니다.
사용자 정의의 장점은 고급에 비해 Widget 위치를 자유롭게 설정할 수 있다는 점입니다.
intro = Intro(
stepCount: 4,
maskClosable: true,
/// implement widgetBuilder function
widgetBuilder: customThemeWidgetBuilder,
);
Widget customThemeWidgetBuilder(StepWidgetParams stepWidgetParams) {
List<String> texts = [
'Hello, I\'m Flutter Intro.',
'I can help you quickly implement the Step By Step guide in the Flutter project.',
'My usage is also very simple, you can quickly learn and use it through example and api documentation.',
'In order to quickly implement the guidance, I also provide a set of out-of-the-box themes, I wish you all a happy use, goodbye!',
];
return Padding(
padding: EdgeInsets.all(
32,
),
child: Column(
children: [
SizedBox(
height: 40,
),
Text(
'${texts[stepWidgetParams.currentStepIndex]}【${stepWidgetParams.currentStepIndex + 1} / ${stepWidgetParams.stepCount}】',
style: TextStyle(
color: Colors.white,
fontSize: 16,
),
),
Row(
children: [
ElevatedButton(
onPressed: stepWidgetParams.onPrev,
child: Text(
'Prev',
),
),
SizedBox(
width: 16,
),
ElevatedButton(
onPressed: stepWidgetParams.onNext,
child: Text(
'Next',
),
),
SizedBox(
width: 16,
),
ElevatedButton(
onPressed: stepWidgetParams.onFinish,
child: Text(
'Finish',
),
),
],
),
],
),
);
}
Step WidgetParams 정보
StepWidgetParams
는 진행 상황을 지도하는 매개 변수다.다음과 같은 내용이 있다.
currentStepIndex
는 현재 스텝 수(인덱스)stepCount
는 전체적인 보진수onPrev
/onNext
/onFinish
/前のステップ
/次のステップ
/終了
가이드 객체 Widget 설정
intro를 생성한 후 가이드 대상 Widget을 설정합니다.
build 시점에서 가이드 대상widget에 intro
key
를 설정합니다.FloatingActionButton(
/// 1st guide
key: intro.keys[0],
child: Icon(
Icons.play_arrow,
),
...
이런 느낌으로 설정intro.keys
.intro.keys
에 지정된 색인은 부트 순서입니다.Widget build(BuildContext context) {
return WillPopScope(
child: Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: SingleChildScrollView(
child: Container(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
width: 100,
child: Placeholder(
/// 2nd guide
key: intro.keys[1],
fallbackHeight: 100,
),
),
SizedBox(
height: 16,
),
Placeholder(
/// 3rd guide
key: intro.keys[2],
fallbackHeight: 100,
),
SizedBox(
height: 16,
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
SizedBox(
width: 100,
child: Placeholder(
/// 4th guide
key: intro.keys[3],
fallbackHeight: 100,
),
),
],
),
],
),
),
),
floatingActionButton: FloatingActionButton(
/// 1st guide
key: intro.keys[0],
child: Icon(
Icons.play_arrow,
),
onPressed: () {
intro.start(context);
},
),
),
...
);
}
지도를 시작하다
여기서 미리 준비 끝났어.
이후
intro.start(context)
부터 지도를 시작한다.void initState() {
super.initState();
Timer(
Duration(
milliseconds: 500,
),
() {
/// start the intro
intro.start(context);
},
);
}
개방 처리
앞으로 해방 처리를 잊지 마라.
IntroStatus introStatus = intro.getStatus();
if (introStatus.isOpen) {
// destroy guide page when tap back key
intro.dispose();
}
끝맺다
실시지도(강좌)는 상당히 번거롭지만, 사용
flutter_intro
은 비교적 실현하기 쉽다.가능하면 이쪽도 오세요.
Reference
이 문제에 관하여(Flutter로 가이드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/asteroid/articles/92a79e9b91f222텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)