1

' I am a beginner in flutter dev and was trying to implement the screen but then cannot seem to get my head around the error thrown This code below is supposed to display an onboarding screen but it seems to throw an error with the emulator regarding the title and cannot seem to find any solution on the web any help?'

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(''),
);
 }
}

'This is supposed to display an Onboarding Screen but throws an error . This is shown with the image attached '

image

2 Answers 2

1

Change these parts of your code to look like this:

 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() ,
),
Sign up to request clarification or add additional context in comments.

Comments

0

Replace this part of your code:

...
Row(
    mainAxisAlignment:MainAxisAlignment.center ,children: [
        _buildPageIndicator() ,
    ],
),
...

with

...
Row(
    mainAxisAlignment:MainAxisAlignment.center, children: _buildPageIndicator(),
),
...

or with

...
Row(
    mainAxisAlignment:MainAxisAlignment.center ,children: [
        ..._buildPageIndicator(),
    ],
),
...

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.