Flutter 我是一个新的颤振,我是按照教程,但我得到了一个错误

Flutter 我是一个新的颤振,我是按照教程,但我得到了一个错误,flutter,mobile-development,Flutter,Mobile Development,我在学习教程时遇到了这样一个错误:“参数类型”Object?无法分配给参数类型“Widget?”。dartargument_type_not_assignable”。我试图查看文档,但我知道如何解决错误 import 'package:flutter/material.dart'; import 'search.dart'; import 'user_info.dart'; import 'cart.dart'; import 'feed.dart'; import 'home.dart';

我在学习教程时遇到了这样一个错误:“参数类型”Object?无法分配给参数类型“Widget?”。dartargument_type_not_assignable”。我试图查看文档,但我知道如何解决错误

import 'package:flutter/material.dart';
import 'search.dart';
import 'user_info.dart';

import 'cart.dart';
import 'feed.dart';
import 'home.dart';

class BottomBarScreen extends StatefulWidget {
  @override
  _BottomBarScreenState createState() => _BottomBarScreenState();
}

class _BottomBarScreenState extends State<BottomBarScreen> {
  List<Map<String, Object>> _pages;
  int _selectedPageIndex = 0;

  @override
  void initState() {
    _pages = [
      {
        'page': home(),
     },
      {
        'page': feed(),
      },
      {
        'page': search(),
      },
  {
    'page': cart(),
  },
  {
    'page': user_info(),
  },
];
super.initState();
  }

  void _selectPage(int index) {
    setState(() {
    _selectedPageIndex = index;
   });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _pages[_selectedPageIndex]['page'],
导入“包装:颤振/材料.省道”;
导入“search.dart”;
导入“user_info.dart”;
导入“cart.dart”;
导入“feed.dart”;
输入“home.dart”;
类BottomBarScreen扩展StatefulWidget{
@凌驾
_BottomBarScreenState createState()=>\u BottomBarScreenState();
}
类_BottomBarScreenState扩展状态{
列表页面;
int _selectedPageIndex=0;
@凌驾
void initState(){
_页数=[
{
“页面”:主页(),
},
{
“页面”:提要(),
},
{
“页面”:搜索(),
},
{
“页面”:购物车(),
},
{
“页面”:用户信息(),
},
];
super.initState();
}
void\u选择页面(整数索引){
设置状态(){
_selectedPageIndex=索引;
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:_pages[_selectedPageIndex]['page'],

在开始时,您已将
\u页面
定义为
列表页面

这意味着您只需告诉Dart贴图中的值将仅为对象

你已经明确地这样规定了,

List<Map<String, Widget>> _pages;
List\u页面;
这样Dart就知道您实际上是在存储
小部件
s,而不仅仅是
对象
s


当你将它用作脚手架的主体时,
主体需要一个
小部件。但是从你之前的定义来看,Dart只能告诉你给它一个
对象,这显然不起作用。

你想创建一个底部导航条吗?如果是,请检查下面的代码

  import 'package:convex_bottom_bar/convex_bottom_bar.dart';
  import 'package:flutter/material.dart';
  import 'Home.dart';
  import 'Fav.dart';
  import 'Search.dart';
  import 'Profile.dart';

  void main() {
           runApp(MyApp());
  }

  class MyApp extends StatelessWidget {
               // This widget is the root of your application.
   @override
            Widget build(BuildContext context) {
           return MaterialApp(
                title: 'Flutter Demo',
                theme: ThemeData(

                primarySwatch: Colors.blue,

                visualDensity: VisualDensity.adaptivePlatformDensity,
            ),
            home: MyHomePage(title: 'Flutter Convex Bottom Bar'),
           );
        }
    }

        class MyHomePage extends StatefulWidget {
            MyHomePage({Key key, this.title}) : super(key: key);

             final String title;

             @override
             _MyHomePageState createState() => _MyHomePageState();
            }

         class _MyHomePageState extends State<MyHomePage> {

            int selectedPage = 0; // user selected page, initial 0 index page"Home()" 
            will be displayed to user
        
             final _pageOptions = [Home(),  Fav(),Search(), Profile()]; //4 different page where user can navigate.


         @override
         Widget build(BuildContext context) {

            return Scaffold(
                appBar: AppBar(
                          title: Text(widget.title),
                         ),
                body: _pageOptions[selectedPage],
                bottomNavigationBar: ConvexAppBar(

                      items: [
                          TabItem(icon: Icons.home, title: 'Home'),
                          TabItem(icon: Icons.favorite, title: 'Favorites'),
                          TabItem(icon: Icons.search, title: 'Search'),
                          TabItem(icon: Icons.person, title: 'Profile'),
                        ],
                      initialActiveIndex: 0,//optional, default as 0
                      onTap: (int i ){
                                setState(() {
                                    selectedPage = I;
                                });
                              },
                     ),// This trailing comma makes auto-formatting nicer for build 
                      methods.
                    );
                  }
               }
import'package:凸面_-bottom_-bar/凸面_-bottom_-bar.dart';
进口“包装:颤振/材料.省道”;
输入“Home.dart”;
进口“Fav.dart”;
导入“Search.dart”;
导入“Profile.dart”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
主页:MyHomePage(标题:“颤振凸底条”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
int selectedPage=0;//用户选择的页面,初始0索引页面“Home()”
将显示给用户
final _pageOptions=[Home(),Fav(),Search(),Profile()];//4个用户可以导航的不同页面。
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:_页面选项[selectedPage],
底部导航栏:凸面导航栏(
项目:[
选项卡项(图标:Icons.home,标题:“home”),
选项卡项(图标:Icons.favorite,标题:“收藏夹”),
选项卡项(图标:Icons.search,标题:“search”),
TabItem(图标:Icons.person,标题:“Profile”),
],
initialActiveIndex:0,//可选,默认为0
onTap:(国际一){
设置状态(){
selectedPage=I;
});
},
),//此尾随逗号使自动格式化更适合生成
方法。
);
}
}
Map类型应该是,您需要将Widget而不是Object返回到body