appBarとbodyだけ、bottomNavigationBarのタブで切り替える仕様への画面遷移の実装
dart
1onPressed: () async { 2 try { 3 await model.login(); 4 await _showDialog(context, 'ログインしました'); 5 Navigator.push( 6 context, 7 MaterialPageRoute( 8 builder: (context) => MainMemories(), 9 ); 10 } catch (e) { 11 _showDialog(context, e.toString()); 12 } 13 },
今、画面遷移のコードをこのように書いているのですが、MainMemoriesの画面がappBarとbodyだけ、bottomNavigationBarのタブで切り替える仕様なので、
The named parameter 'key' is required, but there's no corresponding argument.
とエラーが出てしまいます。
MainMemoriesの画面は以下のようになってます。
class MainMemories extends StatefulWidget { MainMemories({required Key key}) : super(key: key); @override _MainMemoriesState createState() => _MainMemoriesState(); } enum TabItem { Message, Profile, } class _MainMemoriesState extends State<MainMemories> { TabItem _currentTab = TabItem.Message; Map<TabItem, GlobalKey<NavigatorState>> _navigatorKeys = { TabItem.Message: GlobalKey<NavigatorState>(), TabItem.Profile: GlobalKey<NavigatorState>(), }; int _currentIndex = 0; final items = <BottomNavigationBarItem>[ BottomNavigationBarItem( icon: Icon(Icons.home), title: Text('home'), ), BottomNavigationBarItem( icon: Icon(Icons.person), title: Text('プロフィール'), ), ]; final tabs = <Widget>[ ]; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('demo'), actions: <Widget>[ IconButton( icon: const Icon(Icons.add), onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => EditClassName()), ); }, ), ], ), body: Stack( children: <Widget>[ IndexedStack( index: _currentIndex, children: tabs, ), ], ), bottomNavigationBar: _buildBttomNavigator(context), ); } Widget _buildBttomNavigator(BuildContext context) { return BottomNavigationBar( items: items, currentIndex: _currentIndex, onTap: (index) { if (_currentIndex != index) { setState(() { _currentIndex = index; }); } }, ); } } ``` どうやったら、エラーの解消ほうを教えてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。