Home > Back-end >  App works perfectly in Debug mode but not in Release mode
App works perfectly in Debug mode but not in Release mode

Time:10-11

My app works fine in debug mode but shows a grey screen in release mode. It is an E-Commerce app and the page that is getting me in trouble is my products Detail page . I have provided two images for you so that you can get the actual idea of what the error is. Here is the Image of Debug ModeDebug Mode Image Here is the Image of Release ModeRelease Mode Image Here is My Error Log:-

════════ Exception caught by widgets library ═══════════════════════════════════
The following assertion was thrown while applying parent data.:
Incorrect use of ParentDataWidget.

The ParentDataWidget Flexible(flex: 1) wants to apply ParentData of type FlexParentData to a RenderObject, which has been set up to accept ParentData of incompatible type ParentData.

Usually, this means that the Flexible widget has the wrong ancestor RenderObjectWidget. Typically, Flexible widgets are placed directly inside Flex widgets.
The offending Flexible is currently placed inside a ConstrainedBox widget.

The ownership chain for the RenderObject that received the incompatible parent data was:
  RepaintBoundary ← NotificationListener<ScrollNotification> ← GlowingOverscrollIndicator ← Scrollable ← PrimaryScrollController ← SingleChildScrollView ← Flexible ← ConstrainedBox ← Container ← _BodyBuilder ← ⋯

Here is my Code For You:-

import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_application_1/pages/home.dart';

import 'package:flutter_application_1/products.dart';

class HomeDetailPage extends StatefulWidget {
  const HomeDetailPage({
    Key? key,
    required this.singleitem,
  }) : super(key: key);
  final Item singleitem;

  @override
  State<HomeDetailPage> createState() => _HomeDetailPageState();
}

class _HomeDetailPageState extends State<HomeDetailPage> {
  Future<bool> _previousroute() {
    // important trick to handle backbutton press;
    return Future(() => Navigator.canPop(context));
  }

  @override
  Widget build(BuildContext context) {
    // Variables for getting the height and width of the screen
    double h = MediaQuery.of(context).size.height;
    double w = MediaQuery.of(context).size.width;
    return WillPopScope(
      onWillPop: () => _previousroute(),
      child: Scaffold(
        appBar: AppBar(
            backgroundColor: Colors.white,
            shadowColor: Colors.white,
            elevation: 0,
            leading: IconButton(
              icon: Icon(Icons.arrow_back_ios),
              color: Colors.black,
              onPressed: () {
                Navigator.pop(context);
              },
            )),
        // key: ProductsModel.scaffoldKey,
        body: Container(
          height: h,
          child: Flexible(
            fit: FlexFit.tight,
            child: SingleChildScrollView(
              padding: EdgeInsets.all(0.0),
              child: Column(
                mainAxisSize: MainAxisSize.max,
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  ClipPath(
                    clipper: Clipper(),
                    child: Container(
                      decoration: BoxDecoration(
                        color: Color.fromARGB(255, 240, 240, 245),
                      ),
                      child: Padding(
                        padding: const EdgeInsets.all(32.0),
                        child: Hero(
                            tag: Key(widget.singleitem.id.toString()),
                            child: Image.network(widget.singleitem.image)),
                      ),
                    ),
                  ),
                  Padding(
                    padding: const EdgeInsets.all(16.0),
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        Text(
                          widget.singleitem.name,
                          style: TextStyle(
                              color: Colors.black,
                              fontSize: 30,
                              fontWeight: FontWeight.bold),
                        ),
                      ],
                    ),
                  ),
                  Padding(
                    padding: const EdgeInsets.all(16.0),
                    child: Text(
                      widget.singleitem.desc,
                      style: TextStyle(
                          color: Colors.black,
                          fontSize: 18,
                          fontWeight: FontWeight.normal),
                    ),
                  ),
                  Align(
                    alignment: Alignment.bottomCenter,
                    child: Padding(
                      padding: const EdgeInsets.only(left: 4.0, right: 4.0),
                      child: Container(
                        width: w,
                        // box decoration does not work with button
                        // decoration: BoxDecoration(
                        // borderRadius: BorderRadius.circular(32.0)),
                        child: ElevatedButton(
                          onPressed: () {
                            showDialog(
                                context: context,
                                builder: (context) {
                                  return Container(
                                      child: AlertDialog(
                                    actions: [
                                      Padding(
                                        padding: const EdgeInsets.all(8.0),
                                        child: Text(
                                          "Your Order Is On The Way",
                                          style: TextStyle(
                                              fontSize: 30,
                                              fontWeight: FontWeight.bold),
                                        ),
                                      ),
                                      Row(
                                        mainAxisAlignment:
                                            MainAxisAlignment.end,
                                        children: [
                                          Padding(
                                            padding: const EdgeInsets.all(8.0),
                                            child: ElevatedButton(
                                              onPressed: () {
                                                // Used to create ok button
                                                Navigator.of(context).pop();
                                              },
                                              style: ButtonStyle(
                                                  backgroundColor:
                                                      MaterialStateProperty.all(
                                                          Color.fromRGBO(
                                                    0,
                                                    0,
                                                    0,
                                                    1,
                                                  )),
                                                  shape: MaterialStateProperty
                                                      .all(RoundedRectangleBorder(
                                                          borderRadius:
                                                              BorderRadius
                                                                  .circular(
                                                                      16.0)))),
                                              child: Text(
                                                "Ok",
                                                style: TextStyle(
                                                    fontSize: 20,
                                                    fontWeight:
                                                        FontWeight.bold),
                                              ),
                                            ),
                                          )
                                        ],
                                      )
                                    ],
                                  ));
                                });
                          },
                          style: ButtonStyle(
                              backgroundColor:
                                  MaterialStateProperty.all(Color.fromRGBO(
                                0,
                                0,
                                0,
                                1,
                              )),
                              shape: MaterialStateProperty.all<
                                      RoundedRectangleBorder>(
                                  RoundedRectangleBorder(
                                borderRadius: BorderRadius.circular(16.0),
                              ))),
                          child: Text(
                            "Buy",
                            style: TextStyle(
                                color: Colors.white,
                                fontSize: 25,
                                fontWeight: FontWeight.bold),
                          ),
                        ),
                      ),
                    ),
                  )
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

class Clipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    // TODO: implement getClip
    var path = new Path();
    // fixed or unchanged points of the container
    path.lineTo(0, 0);
    path.lineTo(size.width, 0);
    path.lineTo(size.width, size.height - 20);
    path.quadraticBezierTo(
        //point creating the curve radius
        size.width / 2,
        size.height   20,
        // starting point of the curve
        0,
        size.height - 20);
    return path;
  }

  @override
  bool shouldReclip(covariant CustomClipper<Path> oldClipper) {
    // TODO: implement shouldReclip
    return false;
  }
}

CodePudding user response:

it's because you are using fixable as a child of container and it should be used with columns row ...etc your code will work in debug mode but in release it won't work so try my solution it will work

  • Related