実現したいこと
- The expression doesn't evaluate to a function, so it can't be invoked.を解決させて、正常な挙動にする。
前提
FlutterのUI構築の仕方を勉強するにあたり、Youtubeの動画を真似して勉強しています。
発生している問題・エラーメッセージ
The expression doesn't evaluate to a function, so it can't be invoked.
該当のソースコード
nav_screen.dart
1import 'package:facebook_clone/screens/screens.dart'; 2import 'package:flutter/material.dart'; 3import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; 4import 'home_screen.dart'; 5 6import '../widgets/widgets.dart'; 7 8class NavScreen extends StatefulWidget { 9 const NavScreen({super.key}); 10 11 @override 12 State<NavScreen> createState() => _NavScreenState(); 13} 14 15class _NavScreenState extends State<NavScreen> { 16 final List<Widget> _screens = [ 17 HomeScreen(), 18 Scaffold(), 19 Scaffold(), 20 Scaffold(), 21 Scaffold(), 22 Scaffold(), 23 ]; 24 final List<IconData> _icons = [ 25 Icons.home, 26 Icons.ondemand_video, 27 MdiIcons.accountCircleOutline, 28 MdiIcons.accountGroupOutline, 29 MdiIcons.bellOutline, 30 Icons.menu, 31 ]; 32 int _selectedIndex = 0; 33 34 @override 35 Widget build(BuildContext context) { 36 return DefaultTabController( 37 length: _icons.length, 38 child: Scaffold( 39 body: _screens(_selectedIndex), 40 bottomNavigationBar: CustomTabBar( 41 icons: _icons, 42 selectedIndex: _selectedIndex, 43 onTap: (index) => setState(() => _selectedIndex = index), 44 ), 45 ), 46 ); 47 } 48} 49
home_screen.dart
1import 'package:facebook_clone/config/palette.dart'; 2import 'package:facebook_clone/data/data.dart'; 3import 'package:facebook_clone/widgets/circle_button.dart'; 4import 'package:flutter/material.dart'; 5import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; 6import 'package:facebook_clone/widgets/widgets.dart'; 7 8import '../models/models.dart'; 9 10class HomeScreen extends StatelessWidget { 11 const HomeScreen({super.key}); 12 13 @override 14 Widget build(BuildContext context) { 15 return Scaffold( 16 body: CustomScrollView( 17 slivers: [ 18 SliverAppBar( 19 brightness: Brightness.light, 20 backgroundColor: Colors.white, 21 title: Text( 22 "facebook", 23 style: TextStyle( 24 color: Palette.facebookBlue, 25 fontSize: 28.0, 26 fontWeight: FontWeight.bold, 27 letterSpacing: -1.2, 28 ), 29 ), 30 centerTitle: false, 31 floating: true, 32 actions: [ 33 CircleButton( 34 icon: Icons.search, 35 iconSize: 30.0, 36 onPressed: () => print("Search"), 37 ), 38 CircleButton( 39 icon: MdiIcons.facebookMessenger, 40 iconSize: 30.0, 41 onPressed: () => print("Messenger"), 42 ), 43 ], 44 ), 45 SliverToBoxAdapter( 46 child: CreatePostContainer(currentUser: currentUser), 47 ), 48 SliverPadding( 49 padding: const EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 5.0), 50 sliver: SliverToBoxAdapter( 51 child: Rooms(onlineUsers: onlineUsers), 52 ), 53 ), 54 SliverPadding( 55 padding: const EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 5.0), 56 sliver: SliverToBoxAdapter( 57 child: Stories( 58 currentUser: currentUser, 59 stories: stories, 60 ), 61 ), 62 ), 63 SliverList( 64 delegate: SliverChildBuilderDelegate( 65 (context, index) { 66 final Post post = posts[index]; 67 return PostContainer(post: post); 68 }, 69 childCount: posts.length, 70 ), 71 ), 72 ], 73 ), 74 ); 75 } 76} 77
widgets.dart
1export 'circle_button.dart'; 2export 'create_post_container.dart'; 3export 'rooms.dart'; 4export 'profile_avatar.dart'; 5export 'stories.dart'; 6export 'post_container.dart'; 7export 'custom_tab_bar.dart'; 8
試したこと
The expression doesn't evaluate to a function, so it can't be invoked.を和訳したところ、
この式は関数として評価されないので、呼び出すことはできません。という意味だと判明。
The expression doesn't evaluate to a function, so it can't be invoked.でググったところ、以下のページに行き着く。
https://stackoverflow.com/questions/63667623/currentuser-is-not-working-type-why-i-am-seeing-the-expression-doesnt-evaluat
上記のページをもとにして考えてみたところ、nav_screen.dart38行目での記述body: _screens(_selectedIndex),は関数の呼び出しで使っているはずなのに記述として間違っていることはわかりました。しかしお手本にしている動画(1:05:30秒辺り)https://www.youtube.com/watch?v=HvLb5gdUfDE&t=62s
では関数の呼び出しとして機能しています。いろいろ自分なりに調べてみましたが今回の場合どう対応させれば良いのかというのが30分ほど考えてみましたがわからなかったので質問させてください。
現在FlutterのUIの構築のやり方を勉強するという段階なので今回の場合だとどううまく対応させれば良いかがわからない状況です。widgets.dartにexportしている各ファイルは記述量が多くなってしまうのでコメント欄に記載させていただきます。情報の追加依頼などありましたらコメントお願いします。
補足情報(FW/ツールのバージョンなど)
[✓] Flutter (Channel stable, 3.7.0, on macOS 13.1 22C65
darwin-x64, locale ja-JP)
[✓] Android toolchain - develop for Android devices
(Android SDK version 32.1.0-rc1)
[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] VS Code (version 1.74.3)
[✓] Connected device (3 available)
[✓] HTTP Host Availability
回答1件
あなたの回答
tips
プレビュー