いちの
こんばんは〜
弊社ブログに辿り着いていただきありがとうございます!
株式会社メモリアインクのいちのです
この記事を読んでわかること
- Flutterを使用したチュートリアル画面の作成方法
- ECアプリをイメージした3ページのチュートリアル画面の設計
- ページ間の遷移方法と現在のページを表示するUIの実装
開発環境
- Dart 3.0.0
- Flutter 3.10.0
目次
チュートリアル画面の設計
概要
チュートリアル画面は、アプリの基本的な機能や特徴を新規ユーザーに紹介する重要な役割を果たします。この例では、ECアプリをイメージした3ページのチュートリアルを設計します。
設計
ページ1: 商品紹介
商品の写真や説明文を表示して、ユーザーの興味を引きます。
ページ2: 特典紹介
会員特典や割引キャンペーンの情報を提供し、アプリの利用価値を高めます。
ページ3: 会員登録促進
会員登録のメリットを強調し、登録を促すコールトゥアクション(CTA)を配置します。
チュートリアル画面の実装
サンプルコード
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: TutorialScreen(),
);
}
}
class TutorialScreen extends StatefulWidget {
@override
_TutorialScreenState createState() => _TutorialScreenState();
}
class _TutorialScreenState extends State<TutorialScreen> {
int _currentPage = 0;
final PageController _pageController = PageController(initialPage: 0);
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
controller: _pageController,
onPageChanged: (int page) {
setState(() {
_currentPage = page;
});
},
children: <Widget>[
buildPage("商品を紹介", "ここではアプリで扱っている商品の魅力について説明します。"),
buildPage("特典を紹介", "アプリを利用することのメリット、特典について紹介します。"),
buildPage("会員登録を促す", "アプリの全機能を利用するためには会員登録が必要です。"),
],
),
bottomSheet: _currentPage == 2
? ElevatedButton(
child: Text("始める"),
onPressed: () {},
)
: Container(
height: 50,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
TextButton(
onPressed: () {
_pageController.animateToPage(0,
duration: Duration(milliseconds: 400),
curve: Curves.easeInOut);
},
child: Text("スキップ"),
),
Row(
children: List.generate(3, (index) => buildDot(index, _currentPage)),
),
TextButton(
onPressed: () {
_pageController.nextPage(
duration: Duration(milliseconds: 400), curve: Curves.easeInOut);
},
child: Text("次へ"),
),
],
),
),
);
}
Widget buildPage(String title, String description) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(title, style: TextStyle(fontSize: 22, fontWeight: FontWeight.bold)),
SizedBox(height: 20),
Text(description, textAlign: TextAlign.center, style: TextStyle(fontSize: 18)),
],
),
);
}
Widget buildDot(int index, int currentPage) {
return Container(
margin: EdgeInsets.symmetric(horizontal: 5),
height: 10,
width: 10,
decoration: BoxDecoration(
color: currentPage == index ? Colors.blue : Colors.grey,
shape: BoxShape.circle,
),
);
}
}
サンプルコードの解説
ページコントローラーの設定
- 14-17行目:
TutorialScreen
ウィジェットをアプリのホームとして設定します。 - 20行目: 現在のページ番号を追跡するための変数
_currentPage
を定義します。 - 21行目: ページビューをコントロールするための
PageController
を初期化します。
ページインジケータの実装
- 58行目: 現在のページに対応するインジケータを強調表示するために、
buildDot
関数を使用しています。PageController
を初期化します。
次へボタンの実装
- 61-64行目: “次へ”ボタンを押すと、
_pageController.nextPage
メソッドを使って次のページにアニメーション遷移します。
動作確認
それでは、動作を確認してみましょ〜
チュートリアル画面でアニメーションテキストを表示したい読者様。以下の記事で分かりやすく丁寧に解説しておりますので、ぜひご一読いただけますと幸いです。
【Flutter】簡単にアニメーション付きのテキスト(animated_text_kit)を実装する方法について解説
こんばんは〜弊社ブログに辿り着いていただきありがとうございます!株式会社メモリアインクのいちのです この記事を読んでわかること animated_text_kitパッケージを使…
まとめ
いかがでしたでしょうか?今回は、チュートリアル画面の作成方法について、サンプルコードを用いて解説してみました。読者様の開発の手助けに少しでもなればいいなと思いこの記事を書かせていただいております。弊社ではAndroid、iOS、Flutterを使ったアプリ開発についてのブログを多数投稿させていただいておりますので、ご興味のある方はぜひ!
自分の成長を加速させるチャンスがどこかにあるかもしれません。
変化を恐れずに新たな環境に飛び込む勇気のある方は、
未経験からIT・Webエンジニアを目指すなら【ユニゾンキャリア】
コメント