【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part90 Scrolling

基礎 から 学ぶ Flutter 」という書籍で  学習 したことを ブログでアウトプットしていこうと思います。今回は ウィジェット編 ( part90 )です。

前回

【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part89 Scrolling

引き続き、Scrollingについて学びます。

Scrolling

PageViewウィジェット

PageView.customコンストラクタ

PageView.customコンストラクタではchildrenDelegateプロパティにSliverChildBuilderDelegateクラスかSliverChildListDelegateクラスを設定します。

長いクラス名を見るとJava言語を想起してしまいます。Java言語に携わっていることが長いという理由もありますね😄
Delegate処理はC#でよく見かけました。なのでこの仕組みには多少心得があります。

import 'dart:math' as math;

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(new MaterialApp(home: new MyApp()));
}

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _State();
  }
}

final items = <Widget>[
  box("1"),
  box("2"),
  box("3"),
  box("4"),
  box("5"),
];

class _State extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      appBar: AppBar(
        title: Text('テスト中です。'),
      ),
      body: PageView.custom(
        childrenDelegate: SliverChildBuilderDelegate(
          (BuildContext context, int index) {
            return items[index];
          },
          childCount: 3, // ここをコメントアウトするとitemsの要素すべてをページネーションできます。
        ),
      ),
    ));
  }
}

Container box(String text) {
  return Container(
    alignment: Alignment.center,
    width: 100,
    height: 200,
    color:
        Color((math.Random().nextDouble() * 0xFFFFFF).toInt()).withOpacity(1.0),
    child: Text(text),
  );
}

 

最後に

前回のPageView.builderコンテキストのitemCountも省略可能だったのかもしれませんね。
時間が無くて試していませんでした。

今日はここまで!