首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型'List<Widget>‘不是类型'Widget’的子类型

类型'List<Widget>‘不是类型'Widget’的子类型
EN

Stack Overflow用户
提问于 2021-08-12 21:12:02
回答 2查看 46关注 0票数 1

“我是flutter dev的初学者,正在尝试实现屏幕,但似乎无法理解抛出的错误下面的代码应该显示一个入门屏幕,但它似乎抛出了一个关于标题的模拟器错误,并且似乎在web上找不到任何解决方案任何帮助?”

代码语言:javascript
复制
class OnBoardingScreen extends StatefulWidget {

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

class _OnBoardingScreenState extends State<OnBoardingScreen> {
 final int _numPages = 5;
 final PageController _pageController = PageController(initialPage: 0);
int _currentPage =0;
void _onIntroEnd(context) {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => SignUpScreen()));
}

void _onIntroSkip(context) {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => LoginScreen()));
}


 _buildPageIndicator(){
  List<Widget> list =[];
  for (int i=0;i<_numPages;i++){
  list.add(i == _currentPage ? _indicator(true) : _indicator(false) );
 }
 return list;
 }

 _indicator (bool isActive){
 return AnimatedContainer(duration: Duration(milliseconds: 150),
  margin: EdgeInsets.symmetric(horizontal: 8.0),
  height: 8.0,
  width: isActive ? 24.0 : 16.0,
  decoration: BoxDecoration(color: isActive ? Colors.white:Color(0xF385AD5),
    borderRadius:BorderRadius.all(Radius.circular(12))
   ),
  );


 }


@override
Widget build(BuildContext context) {
 return Scaffold(
   body: AnnotatedRegion(
     value: null,
     child: Container(
      decoration: BoxDecoration(
        gradient:LinearGradient(
          begin: Alignment.topCenter,
          end: Alignment.bottomCenter,
          stops: [0.1,0.4,0.7,0.9],
            colors: [
              Color(0xF3C5DD7),
              Color(0xF092458),
              Color(0xF1B5695),
              Color(0xF4664A0)

            ]
        )
      ),
      child: Padding(
        padding: const EdgeInsets.symmetric(vertical: 40),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              Container(
                alignment: Alignment.centerRight,
                child: TextButton(
                  onPressed: (){
                    _onIntroSkip(context);
                  },
                  child: Text(
                    'Skip',
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 20.0,
                    ),
                  ),
                ),
              ),
              Container(
                height: 600.0,
                child: PageView(
                  physics :ClampingScrollPhysics(),
                  controller: _pageController,
                  onPageChanged: (int page){
                    setState(() {
                      _currentPage =page;
                    });

                  },
                  children: [
                    Padding(
                      padding: EdgeInsets.all(40.0),
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Center(
                            child: Image(
                              image: AssetImage('assets/rooms.webp'
                              ),
                              height: 300,
                              width: 300,
                            ),
                          ),
                          SizedBox(
                            height: 30.0,
                          ),
                          Text('Lorem Ipsum',
                          style: TextStyle(
                            fontWeight: FontWeight.w800
                          ),
                          ),

                          SizedBox(height: 15.0,),
                          Text('Lorem IpSsum',style:TextStyle(
                            fontWeight: FontWeight.w300
                          ),
                            )
                        ],
                      ),
                    ),
                    Padding(
                      padding: EdgeInsets.all(40.0),
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Center(
                            child: Image(
                              image: AssetImage('assets/thoughts.webp'
                              ),
                              height: 300,
                              width: 300,
                            ),
                          ),
                          SizedBox(
                            height: 30.0,
                          ),
                          Text('Lorem Ipsum',
                            style: TextStyle(
                                fontWeight: FontWeight.w800
                            ),
                          ),

                          SizedBox(height: 15.0,),
                          Text('Lorem IpSsum',style:TextStyle(
                              fontWeight: FontWeight.w300
                          ),
                          )
                        ],
                      ),
                    ),
                    Padding(
                      padding: EdgeInsets.all(40.0),
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Center(
                            child: Image(
                              image: AssetImage('group.jpg'
                              ),
                              height: 300,
                              width: 300,
                            ),
                          ),
                          SizedBox(
                            height: 30.0,
                          ),
                          Text('Lorem Ipsum',
                            style: TextStyle(
                                fontWeight: FontWeight.w800
                            ),
                          ),

                          SizedBox(height: 15.0,),
                          Text('Lorem IpSsum',style:TextStyle(
                              fontWeight: FontWeight.w300
                          ),
                          )
                        ],
                      ),
                    ),

                  ],
                ),
              ),
              Row(
                mainAxisAlignment:MainAxisAlignment.center ,children: [
                  _buildPageIndicator() ,
              ],
              ),
              _currentPage != _numPages - 1 ?
              Expanded(
                  child: Align(
                  alignment: FractionalOffset.bottomRight,
                   child: TextButton(
                  onPressed: () {
                    _pageController.nextPage(duration: Duration(milliseconds: 500), curve: Curves.ease);
                  }, child:Row(
                     mainAxisAlignment: MainAxisAlignment.center,
                     mainAxisSize: MainAxisSize.min,
                     children: [
                       Text('Next',style: TextStyle(color: Colors.white,
                           fontSize: 22.0),),
                       SizedBox(
                         width: 10.0,
                       ),
                       Icon(
                         Icons.arrow_forward,
                         color: Colors.white,
                         size: 30,
                       )
                     ],
                   ),
                   ),
                   ),
                )

                  :
                  Text("")
            ],

        ),
      ),
    ),
  ),
  bottomSheet:_currentPage == _numPages -1 ? Container(
    height: 100.0,
    width: double.infinity,
    color: Colors.white,
    child: GestureDetector(
      onTap: (){
        _onIntroEnd(context);
      },
      child: Center(
        child: Padding(padding: EdgeInsets.only(bottom: 30.0),child:
        Text(
          'Get Started',
          style: TextStyle(
            color: Color(0xF3C5DD7),
            fontSize: 20.0,
            fontWeight: FontWeight.bold,

          ),
        )),
      ),
    ),
  ) :
      Text(''),
);
 }
}

‘这应该显示一个入职屏幕,但抛出一个错误。这与附加的图像一起显示。’

EN

回答 2

Stack Overflow用户

发布于 2021-08-12 21:15:07

更改代码的这些部分,使其如下所示:

代码语言:javascript
复制
 List<Widget> _buildPageIndicator(){
  List<Widget> list =[];
  for (int i=0;i<_numPages;i++){
  list.add(i == _currentPage ? _indicator(true) : _indicator(false) );
  }
 return list;
 }
.
.
.
.
Row(
 mainAxisAlignment:MainAxisAlignment.center,
 children: _buildPageIndicator() ,
),
票数 1
EN

Stack Overflow用户

发布于 2021-08-12 21:40:53

替换代码的这一部分:

代码语言:javascript
复制
...
Row(
    mainAxisAlignment:MainAxisAlignment.center ,children: [
        _buildPageIndicator() ,
    ],
),
...

使用

代码语言:javascript
复制
...
Row(
    mainAxisAlignment:MainAxisAlignment.center, children: _buildPageIndicator(),
),
...

或使用

代码语言:javascript
复制
...
Row(
    mainAxisAlignment:MainAxisAlignment.center ,children: [
        ..._buildPageIndicator(),
    ],
),
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68764220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档