MENU

【Flutter】CupertinoAlertDialogにテキストフィールドを組み込む方法

記事内に商品プロモーションが含まれる場合があります

CupertinoAlertDialogTextField を追加するには、CupertinoAlertDialogcontent プロパティに CupertinoTextField を埋め込むことで実現できます。

目次

方法

CupertinoAlertDialog(
  content: CupertinoTextField(),
);

必要に応じてtitleやactionsを設定してください。

CupertinoAlertDialogの使い方については以下の記事で詳しく解説しています。

サンプルコード

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return CupertinoApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  final TextEditingController _controller = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      navigationBar: CupertinoNavigationBar(
        middle: Text('CupertinoAlertDialog Example'),
      ),
      child: Center(
        child: CupertinoButton(
          child: Text('Show Alert'),
          onPressed: () => _showDialog(context),
        ),
      ),
    );
  }

  void _showDialog(BuildContext context) {
    showCupertinoDialog(
      context: context,
      builder: (BuildContext context) {
        return CupertinoAlertDialog(
          title: Text('Input'),
          content: Column(
            children: [
              SizedBox(height: 10),
              CupertinoTextField(
                controller: _controller,
                placeholder: 'Enter something',
              ),
            ],
          ),
          actions: [
            CupertinoDialogAction(
              child: Text('Cancel'),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
            CupertinoDialogAction(
              child: Text('OK'),
              onPressed: () {
                // 入力された値を使用した処理
                print('Input: ${_controller.text}');
                Navigator.of(context).pop();
              },
            ),
          ],
        );
      },
    );
  }
}
Share

Comment

コメントする

目次