0
votes

Text is not rendering on the home page of my app, which is where I am getting the issue. I am new to flutter, and am thus new to constraints. Hoping someone can provide some insight, or adjust the code according to the error I am getting.

For further context, this page will render when i initiate a 'flutter run.' The background image will appear but the text will not show up.

Thanks in advance.

The error is:

flutter: EXCEPTION CAUGHT BY RENDERING LIBRARY 

flutter: The following assertion was thrown during performLayout():     
flutter: BoxConstraints forces an infinite width.                       
flutter: These invalid constraints were provided to RenderPositionedBox's layout() function by the following
flutter: function, which probably computed the invalid constraints in question:
flutter:   RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:746:15)
flutter: The offending constraints were:                                
flutter:   BoxConstraints(w=Infinity, 0.0<=h<=Infinity

with the relevant code being:

        /*
*  home_widget.dart
import 'package:flutter/material.dart';
import 'package:stumble/slider1_widget/slider1_widget.dart';
import 'package:stumble/values/values.dart';


class HomeWidget extends StatelessWidget {
  
  void onGroup2Pressed(BuildContext context) => Navigator.push(context, MaterialPageRoute(builder: (context) => Slider1Widget()));
  
  @override
  Widget build(BuildContext context) {
  
    return Scaffold(
      body: Container(
        constraints: BoxConstraints.expand(),
        decoration: BoxDecoration(
          color: Color.fromARGB(255, 255, 255, 255),
        ),
        child: Stack(
          children: [
            Positioned(
              left: -133,
              top: -269,
              right: -255,
              child: Image.asset(
                "assets/images/group-5.png",
                fit: BoxFit.cover,
              ),
            ),
            Positioned(
              left: 28,
              top: 400,
              bottom: 67,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: [
                  Align(
                    alignment: Alignment.topLeft,
                    child: Opacity(
                      opacity: 0.85951,
                      child: Container(
                        decoration: BoxDecoration(
                          boxShadow: [
                            BoxShadow(
                              color: Color.fromARGB(128, 0, 0, 0),
                              offset: Offset(12, 4),
                              blurRadius: 20,
                            ),
                          ],
                        ),
                        child: Text(
                          "Look",
                          textAlign: TextAlign.left,
                          style: TextStyle(
                            color: Color.fromARGB(255, 255, 255, 255),
                            fontFamily: "Open Sans",
                            fontWeight: FontWeight.w700,
                            fontSize: 21,
                          ),
                        ),
                      ),
                    ),
                  ),
                  Spacer(),
                  Align(
                    alignment: Alignment.topLeft,
                    child: Opacity(
                      opacity: 0.58538,
                      child: Container(
                        width: 166,
                        margin: EdgeInsets.only(bottom: 51),
                        decoration: BoxDecoration(
                          boxShadow: [
                            BoxShadow(
                              color: Color.fromARGB(128, 0, 0, 0),
                              offset: Offset(0, 2),
                              blurRadius: 4,
                            ),
                          ],
                        ),
                        child: Text(
                          "I spent a year after College.
    ",
                          textAlign: TextAlign.left,
                          style: TextStyle(
                            color: Color.fromARGB(255, 255, 255, 255),
                            fontFamily: "Arial",
                            fontWeight: FontWeight.w700,
                            fontStyle: FontStyle.italic,
                            fontSize: 13,
                            height: 1.23077,
                          ),
                        ),
                      ),
                    ),
                  ),
                  Align(
                    alignment: Alignment.topLeft,
                    child: Container(
                      width: 140,
                      height: 44,
                      child: FlatButton(
                        onPressed: () => this.onGroup2Pressed(context),
                        color: Color.fromARGB(0, 0, 0, 0),
                        shape: RoundedRectangleBorder(
                          side: BorderSide(
                            color: Color.fromARGB(255, 255, 255, 255),
                            width: 3,
                            style: BorderStyle.solid,
                          ),
                          borderRadius: Radii.k8pxRadius,
                        ),
                        textColor: Color.fromARGB(255, 255, 255, 255),
                        padding: EdgeInsets.all(0),
                        child: Text(
                          "Get Started",
                          textAlign: TextAlign.left,
                          style: TextStyle(
                            color: Color.fromARGB(255, 255, 255, 255),
                            fontFamily: "Open Sans",
                            fontWeight: FontWeight.w700,
                            fontSize: 17,
                          ),
                        ),
                      ),
                    ),
                  ),
                ],
              ),
            ),
            Positioned(
              left: 28,
              top: 424,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: [
                  Align(
                    alignment: Alignment.topLeft,
                    child: Container(
                      decoration: BoxDecoration(
                        boxShadow: [
                          BoxShadow(
                            color: Color.fromARGB(128, 0, 0, 0),
                            offset: Offset(12, 11),
                            blurRadius: 27,
                          ),
                        ],
                      ),
                      child: Text(
                        "Personal\nTravel",
                        textAlign: TextAlign.left,
                        style: TextStyle(
                          color: Color.fromARGB(255, 255, 255, 255),
                          fontFamily: "Open Sans",
                          fontWeight: FontWeight.w700,
                          fontSize: 36,
                          height: 1.25,
                        ),
                      ),
                    ),
                  ),
                  Align(
                    alignment: Alignment.topLeft,
                    child: Container(
                      margin: EdgeInsets.only(top: 11),
                      child: Opacity(
                        opacity: 0.48268,
                        child: Text(
                          "“",
                          textAlign: TextAlign.left,
                          style: TextStyle(
                            color: Color.fromARGB(255, 255, 255, 255),
                            fontFamily: "Arial",
                            fontWeight: FontWeight.w400,
                            fontSize: 55,
                            height: 1,
                          ),
                        ),
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Picture is below. Ignore boxes behind text as they are not meant to be there. This is just to give an idea of format. enter image description here

1
Please provide image of layout you are trying to achieve. I believe you are making common silly mistake by misusing stack-positioned widgetdelmin
@delmin Sample image is now included. Please ignore boxes behind text. Don't have exact design file, but this was from an earlier mockup.KirtM9
@delmin is right.. Please follow this steps to add background image on screen stackoverflow.com/questions/44179889/… and get rid of all Stack and positioned widgets...LonelyWolf

1 Answers

1
votes

Here is simple example. Remember stack is for placing widgets on top of each other! You should avoid using stack specially for creating layouts

body: Container(
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage(
                'your/image'),
            fit: BoxFit.cover,
          ),
        ),
        child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            mainAxisAlignment: MainAxisAlignment.end,
            children: <Widget>[
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Container(
                    child: Text("Text1"),
                    color: Colors.white,
                  ),
                  SizedBox(
                    height: 5,
                  ),
                  Container(
                    child: Text("text2"),
                    color: Colors.white,
                  ),
                  OutlineButton(
                    child: Text('Button'),
                    onPressed: () {},
                  )
                ],
              ),
            ]),
      ),