GithubHelp home page GithubHelp logo

Comments (12)

arbile26 avatar arbile26 commented on June 3, 2024 1

Could you try running your application with the latest commit of responsive_sizer and tell me the result? Thanks!

Add this to your pubspec.yaml dependency

responsive_sizer:
   git:
     url: git://github.com/CoderUni/responsive_sizer.git
     ref: main

The issue is no longet exist!! Thank you very much!

from responsive_sizer.

CoderUni avatar CoderUni commented on June 3, 2024

Thanks for filing the issue. Someone was able to fix the issue by wrapping GetMaterialApp with ResponsiveSizer. Kindly update me if it doesn't work.

from responsive_sizer.

arbile26 avatar arbile26 commented on June 3, 2024

Thanks for filing the issue. Someone was able to fix the issue by wrapping GetMaterialApp with ResponsiveSizer. Kindly update me if it doesn't work.

I have tried both, wrapping GetMaterialApp with ResponsiveSizer and wrapping GetMaterialApp child with ResponsiveSizer but the issue exists.
It works fine in debug mode yet it happens when I run flutter run --release or flutter build apk --release.

from responsive_sizer.

arbile26 avatar arbile26 commented on June 3, 2024

Any updates?

from responsive_sizer.

CoderUni avatar CoderUni commented on June 3, 2024

Hi @arbile26 I'll update you this weekend. I'm a bit busy right now so I couldn't look into it yet.

from responsive_sizer.

CoderUni avatar CoderUni commented on June 3, 2024

@arbile26 Just tested running the default counter app using GetMaterialApp and ResponsiveSizer. Could you post the output of flutter run --release?

Mine seems to be running well:

import 'package:flutter/material.dart';
import 'package:get/get_navigation/get_navigation.dart';
import 'package:responsive_sizer/responsive_sizer.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      debugShowCheckedModeBanner: false,
      home: ResponsiveSizer(builder: (context, orientation, screenType) {
        return const MyHomePage(title: 'Flutter Demo Home Page');
      }),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;
  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), 
    );
  }
}

counter

from responsive_sizer.

arbile26 avatar arbile26 commented on June 3, 2024

@arbile26 Just tested running the default counter app using GetMaterialApp and ResponsiveSizer. Could you post the output of flutter run --release?

Mine seems to be running well:

import 'package:flutter/material.dart';
import 'package:get/get_navigation/get_navigation.dart';
import 'package:responsive_sizer/responsive_sizer.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      debugShowCheckedModeBanner: false,
      home: ResponsiveSizer(builder: (context, orientation, screenType) {
        return const MyHomePage(title: 'Flutter Demo Home Page');
      }),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;
  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), 
    );
  }
}

counter

I/flutter ( 7600): Null check operator used on a null value
I/flutter ( 7600): #0      _PagePosition.applyViewportDimension (package:flutter/src/widgets/page_view.dart:455)
I/flutter ( 7600): #1      RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1456)
I/flutter ( 7600): #2      RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #3      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #4      RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #5      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #6      RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #7      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #8      RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #9      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #10     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #11     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #12     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #13     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #14     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #15     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171)
I/flutter ( 7600): #16     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1003)
I/flutter ( 7600): #17     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240)
I/flutter ( 7600): #18     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:403)
I/flutter ( 7600): #19     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #20     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #21     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #22     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #23     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1376)
I/flutter ( 7600): #24     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #25     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #26     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #27     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56)
I/flutter ( 7600): #28     RenderStack._computeSize (package:flutter/src/rendering/stack.dart:552)
I/flutter ( 7600): #29     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:579)
I/flutter ( 7600): #30     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #31     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171)
I/flutter ( 7600): #32     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1003)
I/flutter ( 7600): #33     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240)
I/flutter ( 7600): #34     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:403)
I/flutter ( 7600): #35     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #36     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #37     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #38     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #39     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1376)
I/flutter ( 7600): #40     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #41     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #42     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #43     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #44     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #45     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #46     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #47     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56)
I/flutter ( 7600): #48     RenderStack._computeSize (package:flutter/src/rendering/stack.dart:552)
I/flutter ( 7600): #49     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:579)
I/flutter ( 7600): #50     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #51     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #52     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #53     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #54     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #55     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #56     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #57     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #58     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #59     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #60     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #61     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #62     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #63     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #64     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3462)
I/flutter ( 7600): #65     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #66     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #67     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #68     _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:749)
I/flutter ( 7600): #69     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #70     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #71     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #72     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #73     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #74     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #75     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #76     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #77     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #78     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #79     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #80     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #81     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #82     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
I/flutter ( 7600): #83     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #84     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:318)
I/flutter ( 7600): #85     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #86     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:318)
I/flutter ( 7600): #87     RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
I/flutter ( 7600): #88     RenderView.performLayout (package:flutter/src/rendering/view.dart:165)
I/flutter ( 7600): #89     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1757)
I/flutter ( 7600): #90     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:887)
I/flutter ( 7600): #91     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:504)
I/flutter ( 7600): #92     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:892)
I/flutter ( 7600): #93     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:370)
I/flutter ( 7600): #94     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1146)
I/flutter ( 7600): #95     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1083)
I/flutter ( 7600): #96     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:997)
I/flutter ( 7600): (elided 3 frames from dart:async)

from responsive_sizer.

CoderUni avatar CoderUni commented on June 3, 2024

This issue might be coming from your PageView. Could you try creating a new flutter project and run the code above?

I didn't get any errors when running the main.dart code above in release mode using both flutter run --release and flutter build apk --split-per-abi && flutter install.

from responsive_sizer.

arbile26 avatar arbile26 commented on June 3, 2024

This issue might be coming from your PageView. Could you try creating a new flutter project and run the code above?

I didn't get any errors when running the main.dart code above in release mode using both flutter run --release and flutter build apk --split-per-abi && flutter install.

No, after a deep debugging, I have spotted the bug. Adaptive.sp() is causing the issue.

This is my code:

import 'package:flutter/material.dart';
import 'package:get/get_navigation/get_navigation.dart';
import 'package:responsive_sizer/responsive_sizer.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      debugShowCheckedModeBanner: false,
      home: ResponsiveSizer(builder: (context, orientation, screenType) {
        return const MyHomePage(title: 'Flutter Demo Home Page');
      }),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;
  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
              style: TextStyle(fontSize: 10.sp.floorToDouble()),
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

I ran flutter run --release on a SM device running Android 11.
My flutter version is: 3.0.4

If you test the example that I've shared with you, you will see that the text disappears altogether but when we press on the floating action button that calls _incrementCounter() function the text appears because the function contains setState().

from responsive_sizer.

arbile26 avatar arbile26 commented on June 3, 2024

This issue might be coming from your PageView. Could you try creating a new flutter project and run the code above?
I didn't get any errors when running the main.dart code above in release mode using both flutter run --release and flutter build apk --split-per-abi && flutter install.

No, after a deep debugging, I have spotted the bug. Adaptive.sp() is causing the issue.

This is my code:

import 'package:flutter/material.dart';
import 'package:get/get_navigation/get_navigation.dart';
import 'package:responsive_sizer/responsive_sizer.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      debugShowCheckedModeBanner: false,
      home: ResponsiveSizer(builder: (context, orientation, screenType) {
        return const MyHomePage(title: 'Flutter Demo Home Page');
      }),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;
  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
              style: TextStyle(fontSize: 10.sp.floorToDouble()),
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

I ran flutter run --release on a SM device running Android 11. My flutter version is: 3.0.4

If you test the example that I've shared with you, you will see that the text disappears altogether but when we press on the floating action button that calls _incrementCounter() function the text appears because the function contains setState().

Edit: After more tests, I found that the whole package doesn't work until you call setState().

from responsive_sizer.

CoderUni avatar CoderUni commented on June 3, 2024

Thanks for the update. It seems like the issue is caused by LayoutBuilder. The BoxConstraints height and width seem to be equal to zero during the initial layout. Also tried using _ambiguate(WidgetsBinding.instance)!.window.physicalSize.width and got the same result.

However, I've noticed that the build method always runs twice. The height and width returned during the first build will be zero but not the succeeding builds. The workaround was to build the widget only during the second and succeeding builds.

from responsive_sizer.

CoderUni avatar CoderUni commented on June 3, 2024

Could you try running your application with the latest commit of responsive_sizer and tell me the result? Thanks!

Add this to your pubspec.yaml dependency

responsive_sizer:
   git:
     url: git://github.com/CoderUni/responsive_sizer.git
     ref: main

from responsive_sizer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.