解決したい課題
「くだもの」と表示されている項目をタップし、BottomSheetから選択したフルーツが「くだもの」から選択したフルーツに置き換わるようにしたい。
現状
コード
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { String _selectedItem = ''; @override Widget build(BuildContext context) { return Scaffold( body: ListView( children: <Widget>[ ListTile( title: Text( 'くだもの', style: TextStyle( color: Colors.grey, ),), onTap: () => _onButtonPressed(), ), Text(_selectedItem), ] ), ); } void _onButtonPressed() { showModalBottomSheet( context: context, builder: (context) { return Container( color: Color(0xFF737373), height: 180, child: Container( child: _buildBottomNavigationMenu(), decoration: BoxDecoration( color: Theme.of(context).canvasColor, borderRadius: BorderRadius.only( topLeft: const Radius.circular(10), topRight: const Radius.circular(10), ), ), ), ); }); } Column _buildBottomNavigationMenu() { return Column( children: <Widget>[ ListTile( title: Text('りんご'), onTap: () => _selectItem('りんご'), ), ListTile( title: Text('みかん'), onTap: () => _selectItem('みかん'), ), ListTile( title: Text('ぶどう'), onTap: () => _selectItem('ぶどう'), ), ], ); } void _selectItem(String name) { Navigator.pop(context); setState(() { _selectedItem = name; }); } }
試したこと
_selectedItem をTextやListTileの階層に入れてみたりしましたがエラーとなってしまいます。
条件分岐式で解決できないか試したりしているのですが、解決できません。
どなたか、アドバイスをよろしくお願いいたします。
追記
replaceAllという方法を知り、試してみましたがエラーとなってしまいました。
// ignore: non_constant_identifier_names String Fruits = 'くだもの'; @override Widget build(BuildContext context) { return Scaffold( body: ListView( children: <Widget>[ ListTile( title: Text( 'くだもの', style: TextStyle( color: Colors.grey, ),), onTap: () => _onButtonPressed(), ), Fruits.replaceAll('くだもの', _selectedItem); ] ), ); }
エラー
lib/main.dart:40:53: Error: Expected ']' before this. Fruits.replaceAll('くだも�?�', _selectedItem); ^ lib/main.dart:40:20: Error: A value of type 'String' can't be assigned to a variable of type 'Widget'.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/31 04:22
2021/01/31 05:10