解決したい課題
選択した日付が「日付を選択」のText欄に反映させたいです。
現状
①「日付を選択」をタップ後、カレンダーが表示されます。
②カレンダーの中から日付を選択しOKをタップします。
③カレンダーが閉じます。
④日付が表示されないです。←なぜ表示されないのか不明です。
※エラーは出力されていません。
コード
import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData( primarySwatch: Colors.green, ), home: Scaffold( appBar: AppBar( title: Text('narururu'), ), body: GestureDetector( onTap: () => FocusScope.of(context).unfocus(), child: HomePage(), )), ); } } class HomePage extends StatefulWidget { HomePageState createState() => HomePageState(); } class HomePageState extends State<HomePage> { String _testItem = '日付を選択'; DateTime _date = new DateTime.now(); Future<Null> _selectDate(BuildContext context) async { final DateTime picked = await showDatePicker( context: context, initialDate: _date, firstDate: new DateTime(2000), lastDate: new DateTime.now().add(new Duration(days: 360)), ); if (picked != null) setState(() => _date = picked); } @override Widget build(BuildContext context) { return InkWell( child: Row( children: [ Padding( padding: const EdgeInsets.all(8.0), child: Text( _testItem == '日付を選択' ? '日付を選択' : _inputDate(), style: TextStyle( color: _testItem == '日付を選択' ? Colors.grey : Colors.black, ), ), ), ], ), onTap: () { _selectDate(context); }, ); } Widget _inputDate() { return Row( children: [ Text(_date.year.toString() + '年'), Text(_date.month.toString() + '月'), Text(_date.day.toString() + '日'), ], ); } }
どなたかアドバイスいただけないでしょうか。
エラーが表示されないため、どこが間違っているのか分かりません。
どうか、よろしくお願いいたします。
追記
Textの中に_inputDate(),で記述するとエラーがでました。
ふむふむ、_inputDate(),はStringではなくWidgetだからダメなんですね。
Error: The argument type 'Widget' can't be assigned to the parameter type 'String'. - 'Widget' is from 'package:flutter/src/widgets/framework.dart' ('/C:/src/flutter/packages/flutter/lib/src/widgets/framework.dart'). _inputDate(),
けど、どうしよう('_')考え中
追記2
WidgetをStringに変更して下記のコードで試してみました。
エラーは出力されませんが、日付は表示されませんでした。
うーん、何がいけないのだー????
Text( _testItem == '日付を選択' ? '日付を選択' : _date.year.toString() + '年' + _date.month.toString() + '月' + _date.day.toString() + '日', style: TextStyle( color: _testItem == '日付を選択' ? Colors.grey : Colors.black, ), ),
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/07 15:52