こんにちは、flutter初心者です。
BottomNavigationBarを遷移後の画面でも保持するため、
CupertinoTabBarを用いてswitch文で表示画面の切り替えをしたいと考えています。
しかし、以下のエラーが出てしまいビルドができない状態です。
Failed assertion: line 4531 pos 14: 'owner!._debugCurrentBuildTarget == this': is not true.
どのようにすれば、エラーなく画面遷移を行えますでしょうか?
皆さんのお知恵をお借りできましたら嬉しいです!
main.dart
1import 'package:flutter/material.dart'; 2import 'package:test001/screens/home_screen.dart'; 3import 'package:test001/screens/menu_screen.dart'; 4import 'package:test001/screens/profile_screen.dart'; 5import 'models/routes.dart'; 6 7void main() { 8 runApp(const MyApp()); 9} 10 11class MyApp extends StatelessWidget { 12 const MyApp({Key? key}) : super(key: key); 13 14 // This widget is the root of your application. 15 @override 16 Widget build(BuildContext context) { 17 return MaterialApp( 18 debugShowCheckedModeBanner: false, 19 title: 'Myapp', 20 theme: ThemeData( 21 primarySwatch: Colors.yellow, 22 textTheme: const TextTheme( 23 titleLarge: TextStyle( 24 fontSize: 20, 25 color: Colors. white, 26 fontWeight: FontWeight.w500, 27 ) 28 ) 29 ), 30 home: const HomeScreen(), 31 ); 32 } 33}
cupertino_bottom_navigation.dart
1import 'package:flutter/cupertino.dart'; 2import 'package:flutter/material.dart'; 3import 'package:test001/screens/home_screen.dart'; 4import 'package:test001/screens/menu_screen.dart'; 5import 'package:test001/screens/profile_screen.dart'; 6 7class BottomNavigation extends StatelessWidget { 8 const BottomNavigation({ 9 Key? key, 10 }) : super(key: key); 11 12 @override 13 Widget build(BuildContext context) { 14 return CupertinoTabScaffold( 15 tabBar: CupertinoTabBar( 16 items: const <BottomNavigationBarItem>[ 17 BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Home'), 18 BottomNavigationBarItem(icon: Icon(Icons.menu), label: 'Menu'), 19 BottomNavigationBarItem(icon: Icon(Icons.person), label: 'Profile'), 20 ], 21 ), 22 tabBuilder: (BuildContext context, int index) { 23 switch (index) { 24 case 0: 25 return CupertinoTabView( 26 builder: (context) { 27 return const CupertinoPageScaffold( 28 child: HomeScreen(), 29 ); 30 }, 31 ); 32 case 1: 33 return CupertinoTabView( 34 builder: (context) { 35 return const CupertinoPageScaffold( 36 child: MenuScreen(), 37 ); 38 }, 39 ); 40 case 2: 41 return CupertinoTabView(builder: (context) { 42 return const CupertinoPageScaffold( 43 child: ProfileScreen(), 44 ); 45 }); 46 default: 47 return CupertinoTabView( 48 builder: (context) { 49 return const CupertinoPageScaffold( 50 child: HomeScreen(), 51 ); 52 }, 53 ); 54 } 55 }); 56 } 57}
home_screen.dart
1import '../widgets/cupertino_bottom_navigation.dart'; 2import 'package:flutter/material.dart'; 3 4class HomeScreen extends StatefulWidget { 5 const HomeScreen({Key? key}) : super(key: key); 6 7 @override 8 _HomeScreenState createState() => _HomeScreenState(); 9} 10 11class _HomeScreenState extends State<HomeScreen> { 12 @override 13 Widget build(BuildContext context) { 14 return Scaffold( 15 backgroundColor: Colors.yellow, 16 appBar: AppBar( 17 leading: const Icon(Icons.person), 18 title: Text('Your Name'), 19 ), 20 bottomNavigationBar: const BottomNavigation()); 21 } 22}
menu_screen.dart
1import 'package:flutter/material.dart'; 2 3class MenuScreen extends StatefulWidget{ 4 const MenuScreen ({ Key? key }) : super(key: key); 5 6 @override 7 _MenuState createState() => _MenuState(); 8} 9 10class _MenuState extends State<MenuScreen>{ 11 @override 12 Widget build(BuildContext context) => Scaffold( 13 appBar:AppBar(title: Text('メニューページ'),), 14 ); 15 }
profile_screen.dart
1import 'package:flutter/material.dart'; 2 3class ProfileScreen extends StatefulWidget{ 4 const ProfileScreen({ Key? key }) : super(key: key); 5 6 @override 7 _ProfileState createState() => _ProfileState(); 8} 9 10class _ProfileState extends State<ProfileScreen>{ 11 @override 12 Widget build(BuildContext context) => Scaffold( 13 appBar:AppBar(title: Text('プロフィールページ'),), 14 ); 15 }
ta.fuさんにご指摘いただいた箇所の修正をさせていただきました。
しかし、以前として同じエラーメッセージが表示されている状態です。
全体のコードを記載していますので、もし怪しい箇所などありましたら教えてもらえますと助かります!

回答2件
あなたの回答
tips
プレビュー