Flutter screen adaptation, font adaptation, get screen information

Overview

flutter_screenutil

pub package pub points popularity

A flutter plugin for adapting screen and font size.Let your UI display a reasonable layout on different screen sizes!

Note: This plugin is still under development, and some APIs might not be available yet.

中文文档

README em Português

github

Update log

Usage:

Add dependency:

Please check the latest version before installation. If there is any problem with the new version, please use the previous version

dependencies:
  flutter:
    sdk: flutter
  # add flutter_screenutil
  flutter_screenutil: ^{latest version}

Add the following imports to your Dart code:

import 'package:flutter_screenutil/flutter_screenutil.dart';

Property

Property Type Default Value Description
designSize Size Size(360, 690) The size of the device screen in the design draft, in dp
builder Widget Function() Container() Generally returning a Function of MaterialApp type
orientation Orientation portrait screen orientation
splitScreenMode bool true support for split screen

Initialize and set the fit size and font size to scale according to the system's "font size" accessibility option

Please set the size of the design draft before use, the width and height of the design draft.

The first way:

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    //Set the fit size (Find your UI design, look at the dimensions of the device screen and fill it in,unit in dp)
    return ScreenUtilInit(
      designSize: Size(360, 690),
      builder: () => MaterialApp(
        ...
        theme: ThemeData(
                          primarySwatch: Colors.blue,
                          textTheme: TextTheme(
                          //To support the following, you need to use the first initialization method
                            button: TextStyle(fontSize: 45.sp)
                          ),
                        ),
      ),
    );
  }
}

The second way:Does not support font adaptation in the textTheme of MaterialApp's theme.

(If it is not necessary, it is recommended to use the second)

not support this:

MaterialApp(
  ...
  theme: ThemeData(
           textTheme: TextTheme(
             //To support the following, you need to use the first initialization method
             button: TextStyle(fontSize: 45.sp)
             ),
           ),
)
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter_ScreenUtil',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomePage(title: 'FlutterScreenUtil Demo'),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({Key key, this.title}) : super(key: key);

  final String title;

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

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    //Set the fit size (fill in the screen size of the device in the design) If the design is based on the size of the 360*690(dp)
    ScreenUtil.init(
        BoxConstraints(
            maxWidth: MediaQuery.of(context).size.width,
            maxHeight: MediaQuery.of(context).size.height),
        designSize: Size(360, 690),
        orientation: Orientation.portrait);
    return Scaffold();
  }
}

Use:

API

Pass the dp size of the design draft

    ScreenUtil().setWidth(540)  (dart sdk>=2.6 : 540.w) //Adapted to screen width
    ScreenUtil().setHeight(200) (dart sdk>=2.6 : 200.h) //Adapted to screen height , under normal circumstances, the height still uses x.w
    ScreenUtil().radius(200)    (dart sdk>=2.6 : 200.r)    //Adapt according to the smaller of width or height
    ScreenUtil().setSp(24)      (dart sdk>=2.6 : 24.sp) //Adapter font
    12.sm   //return min(12,12.sp)

    ScreenUtil().pixelRatio       //Device pixel density
    ScreenUtil().screenWidth   (dart sdk>=2.6 : 1.sw)    //Device width
    ScreenUtil().screenHeight  (dart sdk>=2.6 : 1.sh)    //Device height
    ScreenUtil().bottomBarHeight  //Bottom safe zone distance, suitable for buttons with full screen
    ScreenUtil().statusBarHeight  //Status bar height , Notch will be higher
    ScreenUtil().textScaleFactor  //System font scaling factor

    ScreenUtil().scaleWidth //The ratio of actual width to UI design
    ScreenUtil().scaleHeight //The ratio of actual height to UI design

    ScreenUtil().orientation  //Screen orientation
    0.2.sw  //0.2 times the screen width
    0.5.sh  //50% of screen height

Adapt screen size:

Pass the dp size of the design draft((The unit is the same as the unit at initialization)):

Adapted to screen width: ScreenUtil().setWidth(540),

Adapted to screen height: ScreenUtil().setHeight(200), In general, the height is best to adapt to the width

If your dart sdk>=2.6, you can use extension functions:

example:

instead of :

Container(
width: ScreenUtil().setWidth(50),
height:ScreenUtil().setHeight(200),
)

you can use it like this:

Container(
width: 50.w,
height:200.h
)

Note

The height can also use setWidth to ensure that it is not deformed(when you want a square)

The setHeight method is mainly to adapt to the height, which is used when you want to control the height of a screen on the UI to be the same as the actual display.

Generally speaking, 50.w!=50.h.

//for example:

///If you want to display a square:
///The UI may show a rectangle:
Container(
           width: 375.w,
           height: 375.h,
            ),
            
////If you want to display a square:
Container(
           width: 300.w,
           height: 300.w,
            ),

or

Container(
           width: 300.r,
           height: 300.r,
            ),

Adapter font:

//Incoming font size(The unit is the same as the unit at initialization)
ScreenUtil().setSp(28) 
28.sp

//for example:
Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                Text(
                  '16sp, will not change with the system.',
                  style: TextStyle(
                    color: Colors.black,
                    fontSize: 16.sp,
                  ),
                  textScaleFactor: 1.0,
                ),
                Text(
                  '16sp,if data is not set in MediaQuery,my font size will change with the system.',
                  style: TextStyle(
                    color: Colors.black,
                    fontSize: 16.sp,
                  ),
                ),
              ],
            )

Setting font does not change with system font size

APP global:

 MaterialApp(
        debugShowCheckedModeBanner: false,
        title: 'Flutter_ScreenUtil',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        builder: (context, widget) {
          return MediaQuery(
            ///Setting font does not change with system font size
            data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
            child: widget,
          );
        },
        home: HomePage(title: 'FlutterScreenUtil Demo'),
      ),

Separate Text:

Text("text", textScaleFactor: 1.0)

widget test

Example:

example demo

Effect:

effect tablet effect

Comments
  • The following _CastError was thrown building Builder(dirty, dependencies: [MediaQuery]): Null check operator used on a null value

    The following _CastError was thrown building Builder(dirty, dependencies: [MediaQuery]): Null check operator used on a null value

    My project is working fine until tomorrow. And now I get this error in main.dart

    Null check operator used on a null value

    The relevant error-causing widget was: 
      Builder Builder:file:///Users/mac_6/Documents/FlutterSDK/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_screenutil-5.4.0+1/lib/src/screenutil_init.dart:29:14
    When the exception was thrown, this was the stack: 
    #0      _MyAppState._redirectToScreen (package:tabela_app/main.dart:356:28)
    #1      _MyAppState.build.<anonymous closure> (package:tabela_app/main.dart:344:19)
    #2      ScreenUtilInit.build.<anonymous closure> (package:flutter_screenutil/src/screenutil_init.dart:43:23)
    #3      Builder.build (package:flutter/src/widgets/basic.dart:7398:48)
    #4      StatelessElement.build (package:flutter/src/widgets/framework.dart:4827:28)
    #5      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4754:15)
    #6      Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
    #7      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735:5)
    

    Main.dart

    ScreenUtilInit(
              minTextAdapt: true,
              splitScreenMode: true,
              builder: (_) => MaterialApp(
                navigatorKey: navigatorKey,
                title: 'Flutter Demo',
                locale: _locale,
                builder: (context, widget) {
                  //add this line
                  ScreenUtil.setContext(context);
                  return MediaQuery(
                    //Setting font does not change with system font size
                    data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
                    child: widget!,
                  );
                },
                theme: ThemeData(
                  primarySwatch: Constants.appColor,
                  textSelectionTheme: const TextSelectionThemeData(
                    cursorColor: Colors.black,
                    // selectionColor: Colors.black,
                    selectionHandleColor: Colors.black,
                  ),
                  inputDecorationTheme: const InputDecorationTheme(
                    border: OutlineInputBorder(
                      borderRadius: BorderRadius.all(Radius.circular(4.00)),
                    ),
                    fillColor: Colors.white,
                    contentPadding: EdgeInsets.symmetric(
                      vertical: 12.50,
                      horizontal: 10.00,
                    ),
                  ),
                ),
                home: _redirectToScreen(),
                debugShowCheckedModeBanner: false,
              ),
            ),
    

    So for that I update new version of Flutter ScreenUtil flutter_screenutil: ^5.4.0+1 and get again same error. What is the permanent solution for this error?. I notice whenever new version is available for screenutil then I face **Null check operator used on a null value**.

    opened by alizestbrains 42
  • 5.4.0+1升级到5.5.0后,点击输入框(弹起键盘)报错了

    5.4.0+1升级到5.5.0后,点击输入框(弹起键盘)报错了

    升级5.5.0后,点击输入框,弹起键盘,会出现如下错误:

    
    ======== Exception caught by widgets library =======================================================
    The following assertion was thrown building _MediaQueryFromWindow(state: _MediaQueryFromWindowState#9c4cc):
    'package:flutter/src/widgets/framework.dart': Failed assertion: line 5356 pos 14: '() {
            // check that it really is our descendant
            Element? ancestor = dependent._parent;
            while (ancestor != this && ancestor != null)
              ancestor = ancestor._parent;
            return ancestor == this;
          }()': is not true.
    
    
    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
    In either case, please report this assertion by filing a bug on GitHub:
      https://github.com/flutter/flutter/issues/new?template=2_bug.md
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/lfh/Developer/wakeai/yzzw_app/lib/src/app.dart:32:14
    When the exception was thrown, this was the stack: 
    #2      InheritedElement.notifyClients (package:flutter/src/widgets/framework.dart:5356:14)
    #3      ProxyElement.updated (package:flutter/src/widgets/framework.dart:5118:5)
    #4      InheritedElement.updated (package:flutter/src/widgets/framework.dart:5338:13)
    #5      ProxyElement.update (package:flutter/src/widgets/framework.dart:5106:5)
    #6      Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
    #7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
    #8      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
    #9      Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
    #10     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2659:19)
    #11     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
    #12     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
    #13     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #14     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
    #15     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #19     _invoke (dart:ui/hooks.dart:151:10)
    #20     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #21     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 5 frames from class _AssertionError and dart:async)
    ====================================================================================================
    
    ======== Exception caught by scheduler library =====================================================
    The following assertion was thrown during a scheduler callback:
    'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.
    
    
    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
    In either case, please report this assertion by filing a bug on GitHub:
      https://github.com/flutter/flutter/issues/new?template=2_bug.md
    
    When the exception was thrown, this was the stack: 
    #2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
    #3      EditableTextState._updateSizeAndTransform (package:flutter/src/widgets/editable_text.dart:2669:48)
    #4      EditableTextState._updateSizeAndTransform.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2672:49)
    #5      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #6      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
    #7      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #11     _invoke (dart:ui/hooks.dart:151:10)
    #12     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #13     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 5 frames from class _AssertionError and dart:async)
    ====================================================================================================
    
    ======== Exception caught by scheduler library =====================================================
    The following assertion was thrown during a scheduler callback:
    'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.
    
    
    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
    In either case, please report this assertion by filing a bug on GitHub:
      https://github.com/flutter/flutter/issues/new?template=2_bug.md
    
    When the exception was thrown, this was the stack: 
    #2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
    #3      RenderBox.localToGlobal (package:flutter/src/rendering/box.dart:2603:39)
    #4      RenderEditable._snapToPhysicalPixel (package:flutter/src/rendering/editable.dart:2238:33)
    #5      RenderEditable.getLocalRectForCaret (package:flutter/src/rendering/editable.dart:1732:23)
    #6      EditableTextState._updateComposingRectIfNeeded (package:flutter/src/widgets/editable_text.dart:2690:40)
    #7      EditableTextState._updateComposingRectIfNeeded.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2695:49)
    #8      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #9      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
    #10     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #14     _invoke (dart:ui/hooks.dart:151:10)
    #15     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #16     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 5 frames from class _AssertionError and dart:async)
    ====================================================================================================
    
    ======== Exception caught by scheduler library =====================================================
    The following assertion was thrown during a scheduler callback:
    'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.
    
    
    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
    In either case, please report this assertion by filing a bug on GitHub:
      https://github.com/flutter/flutter/issues/new?template=2_bug.md
    
    When the exception was thrown, this was the stack: 
    #2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
    #3      RenderBox.localToGlobal (package:flutter/src/rendering/box.dart:2603:39)
    #4      RenderEditable._snapToPhysicalPixel (package:flutter/src/rendering/editable.dart:2238:33)
    #5      RenderEditable.getLocalRectForCaret (package:flutter/src/rendering/editable.dart:1732:23)
    #6      EditableTextState._updateCaretRectIfNeeded (package:flutter/src/widgets/editable_text.dart:2704:47)
    #7      EditableTextState._updateCaretRectIfNeeded.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2708:49)
    #8      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #9      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
    #10     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #14     _invoke (dart:ui/hooks.dart:151:10)
    #15     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #16     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 5 frames from class _AssertionError and dart:async)
    ====================================================================================================
    
    ======== Exception caught by scheduler library =====================================================
    The following assertion was thrown during a scheduler callback:
    'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.
    
    
    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
    In either case, please report this assertion by filing a bug on GitHub:
      https://github.com/flutter/flutter/issues/new?template=2_bug.md
    
    When the exception was thrown, this was the stack: 
    #2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
    #3      RenderViewportBase.getOffsetToReveal (package:flutter/src/rendering/viewport.dart:796:52)
    #4      RenderViewportBase.showInViewport (package:flutter/src/rendering/viewport.dart:1165:55)
    #5      RenderViewportBase.showOnScreen (package:flutter/src/rendering/viewport.dart:1111:46)
    #6      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #7      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #8      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #9      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #10     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #11     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #12     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #13     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #14     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #15     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #16     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #17     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #18     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #19     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #20     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #21     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #22     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #23     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #24     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #25     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #26     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #27     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #28     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #29     EditableTextState._scheduleShowCaretOnScreen.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2454:22)
    #30     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #31     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
    #32     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #36     _invoke (dart:ui/hooks.dart:151:10)
    #37     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #38     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 5 frames from class _AssertionError and dart:async)
    ====================================================================================================
    
    ======== Exception caught by scheduler library =====================================================
    The following assertion was thrown during a scheduler callback:
    'package:flutter/src/rendering/object.dart': Failed assertion: line 2517 pos 12: 'attached': is not true.
    
    
    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
    In either case, please report this assertion by filing a bug on GitHub:
      https://github.com/flutter/flutter/issues/new?template=2_bug.md
    
    When the exception was thrown, this was the stack: 
    #2      RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:2517:12)
    #3      RenderViewportBase.getOffsetToReveal (package:flutter/src/rendering/viewport.dart:796:52)
    #4      RenderViewportBase.showInViewport (package:flutter/src/rendering/viewport.dart:1165:55)
    #5      RenderViewportBase.showOnScreen (package:flutter/src/rendering/viewport.dart:1111:46)
    #6      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #7      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #8      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #9      RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #10     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #11     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #12     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #13     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #14     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #15     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #16     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #17     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #18     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #19     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #20     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #21     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #22     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #23     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #24     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #25     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #26     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #27     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #28     RenderObject.showOnScreen (package:flutter/src/rendering/object.dart:3066:20)
    #29     EditableTextState._scheduleShowCaretOnScreen.<anonymous closure> (package:flutter/src/widgets/editable_text.dart:2454:22)
    #30     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #31     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1089:9)
    #32     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #36     _invoke (dart:ui/hooks.dart:151:10)
    #37     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #38     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 5 frames from class _AssertionError and dart:async)
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following assertion was thrown while finalizing the widget tree:
    Duplicate GlobalKey detected in widget tree.
    
    The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of the widget tree being truncated unexpectedly, because the second time a key is seen, the previous instance is moved to the new location. The key was:
    - [LabeledGlobalKey<NavigatorState>#4a1c8]
    This was determined by noticing that after the widget with the above global key was moved out of its previous parent, that previous parent never updated during this frame, meaning that it either did not update at all or updated before the widget was moved, in either case implying that it still thinks that it should have a child with that global key.
    The specific parent that did not update after having one or more children forcibly removed due to GlobalKey reparenting is:
    - Listener(listeners: [down], behavior: deferToChild, renderObject: RenderPointerListener#ca1f4 NEEDS-LAYOUT NEEDS-COMPOSITING-BITS-UPDATE DETACHED)
    A GlobalKey can only be specified on one widget at a time in the widget tree.
    When the exception was thrown, this was the stack: 
    #0      BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2991:15)
    #1      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3016:8)
    #2      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:19)
    #3      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
    #4      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #5      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
    #6      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #10     _invoke (dart:ui/hooks.dart:151:10)
    #11     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #12     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 3 frames from dart:async)
    ====================================================================================================
    
    

    同时输入框丢失焦点时也会报错:

    
    ======== Exception caught by widgets library =======================================================
    The following assertion was thrown building _MediaQueryFromWindow(state: _MediaQueryFromWindowState#9c4cc):
    'package:flutter/src/widgets/framework.dart': Failed assertion: line 5356 pos 14: '() {
            // check that it really is our descendant
            Element? ancestor = dependent._parent;
            while (ancestor != this && ancestor != null)
              ancestor = ancestor._parent;
            return ancestor == this;
          }()': is not true.
    
    
    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
    In either case, please report this assertion by filing a bug on GitHub:
      https://github.com/flutter/flutter/issues/new?template=2_bug.md
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/lfh/Developer/wakeai/yzzw_app/lib/src/app.dart:32:14
    When the exception was thrown, this was the stack: 
    #2      InheritedElement.notifyClients (package:flutter/src/widgets/framework.dart:5356:14)
    #3      ProxyElement.updated (package:flutter/src/widgets/framework.dart:5118:5)
    #4      InheritedElement.updated (package:flutter/src/widgets/framework.dart:5338:13)
    #5      ProxyElement.update (package:flutter/src/widgets/framework.dart:5106:5)
    #6      Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
    #7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
    #8      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
    #9      Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
    #10     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2659:19)
    #11     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
    #12     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
    #13     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #14     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
    #15     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #19     _invoke (dart:ui/hooks.dart:151:10)
    #20     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #21     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 5 frames from class _AssertionError and dart:async)
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following assertion was thrown while finalizing the widget tree:
    Duplicate GlobalKey detected in widget tree.
    
    The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of the widget tree being truncated unexpectedly, because the second time a key is seen, the previous instance is moved to the new location. The key was:
    - [LabeledGlobalKey<NavigatorState>#4a1c8]
    This was determined by noticing that after the widget with the above global key was moved out of its previous parent, that previous parent never updated during this frame, meaning that it either did not update at all or updated before the widget was moved, in either case implying that it still thinks that it should have a child with that global key.
    The specific parent that did not update after having one or more children forcibly removed due to GlobalKey reparenting is:
    - Listener(listeners: [down], behavior: deferToChild, renderObject: RenderPointerListener#ca1f4 NEEDS-LAYOUT NEEDS-COMPOSITING-BITS-UPDATE DETACHED)
    A GlobalKey can only be specified on one widget at a time in the widget tree.
    When the exception was thrown, this was the stack: 
    #0      BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2991:15)
    #1      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3016:8)
    #2      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:19)
    #3      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
    #4      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #5      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
    #6      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #10     _invoke (dart:ui/hooks.dart:151:10)
    #11     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #12     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 3 frames from dart:async)
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following assertion was thrown while finalizing the widget tree:
    Duplicate GlobalKey detected in widget tree.
    
    The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of the widget tree being truncated unexpectedly, because the second time a key is seen, the previous instance is moved to the new location. The key was:
    - [LabeledGlobalKey<NavigatorState>#4a1c8]
    This was determined by noticing that after the widget with the above global key was moved out of its previous parent, that previous parent never updated during this frame, meaning that it either did not update at all or updated before the widget was moved, in either case implying that it still thinks that it should have a child with that global key.
    The specific parent that did not update after having one or more children forcibly removed due to GlobalKey reparenting is:
    - Listener(listeners: [down], behavior: deferToChild, renderObject: RenderPointerListener#ca1f4 NEEDS-LAYOUT NEEDS-COMPOSITING-BITS-UPDATE DETACHED)
    A GlobalKey can only be specified on one widget at a time in the widget tree.
    When the exception was thrown, this was the stack: 
    #0      BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2991:15)
    #1      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3016:8)
    #2      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:19)
    #3      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
    #4      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #5      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
    #6      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #10     _invoke (dart:ui/hooks.dart:151:10)
    #11     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #12     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 3 frames from dart:async)
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following assertion was thrown while finalizing the widget tree:
    Duplicate GlobalKey detected in widget tree.
    
    The following GlobalKey was specified multiple times in the widget tree. This will lead to parts of the widget tree being truncated unexpectedly, because the second time a key is seen, the previous instance is moved to the new location. The key was:
    - [LabeledGlobalKey<NavigatorState>#4a1c8]
    This was determined by noticing that after the widget with the above global key was moved out of its previous parent, that previous parent never updated during this frame, meaning that it either did not update at all or updated before the widget was moved, in either case implying that it still thinks that it should have a child with that global key.
    The specific parent that did not update after having one or more children forcibly removed due to GlobalKey reparenting is:
    - Listener(listeners: [down], behavior: deferToChild, renderObject: RenderPointerListener#9e300 NEEDS-LAYOUT NEEDS-COMPOSITING-BITS-UPDATE DETACHED)
    A GlobalKey can only be specified on one widget at a time in the widget tree.
    When the exception was thrown, this was the stack: 
    #0      BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2991:15)
    #1      BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3016:8)
    #2      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:19)
    #3      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
    #4      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
    #5      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
    #6      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:995:5)
    #10     _invoke (dart:ui/hooks.dart:151:10)
    #11     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
    #12     _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 3 frames from dart:async)
    ====================================================================================================
    
    

    退回5.4.0+1,除了触发多次rebuild外,一切正常。

    opened by lianfanghua 19
  • All text in the app is invisible

    All text in the app is invisible

    Description

    All of the text in the app is invisible, this seems to be a reoccurring problem with this package and is preventing us from releasing the app.

    Where it occurs

    We have noticed that this bug occurs on Android, specifically on release mode. I am unable to reproduce this bug on my iOS simulator or my Android simulator.

    What I have done to mitigate this

    • I have added a builder method to my material app where I use setContext().
    • Wrapped the ScreenUtilInit widget with a MediaQuery and passed it data: MediaQueryData.fromWindow(WidgetsBinding.instance!.window)
    • Removed const from the home parameter of the MaterialApp.

    Extra Info + Image

    • I am using GetMaterialApp instead of the vanilla MaterialApp.
    • Seems to be the same issue as #348 #80 #341 #337
    • I am using the latest flutter version, flutter doctor shows no issues.
    opened by BrunoJurkovic 17
  • 改变屏幕大小时不会重建组件

    改变屏幕大小时不会重建组件

    flutter 2.1.0 当屏幕大小改变(比如分屏模式下调整窗口大小,或者是浏览器改变窗口大小),LayoutBuilder重新调用了builder,screenutil重新init了,但是页面中别的组件并不会重新build,导致并没能按照新的屏幕大小进行变化。此时如果其他操作触发了组件重建,便会按照新的大小进行适配,造成屏幕中部分组件按旧大小适配,部分组件按新大小适配的情况

    stale 
    opened by windrunner414 17
  • 5.0.0-nullsafety

    5.0.0-nullsafety

    I use the short format 30.sp, 20.w and so on, after upgrading to version 5.0.0-nullsafety.10, i get error: The argument type 'dynamic' can't be assigned to the parameter type 'double'

    sdk: ">=2.12.0 <3.0.0" Flutter 2.0.2

    image

    opened by justkost 17
  •  MediaQuery.of() called with a context that does not contain a MediaQuery.

    MediaQuery.of() called with a context that does not contain a MediaQuery.

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context);
        return MaterialApp();
      }
    }
    

    I don't think that it's necessary to use context, you can get screen width like this,

    import 'package:flutter/material.dart';
    import 'dart:ui';
    
    final num vh = MediaQueryData.fromWindow(window).size.height;
    
    opened by chavesgu 16
  • font size gets zero in release mode.

    font size gets zero in release mode.

    Flutter version : 1.17.5 Library version: 2.1.0 till version 1.1.0 where context was used it was working fine. after that i upgraded to version 2.1.0 than in debug mode it is working fine but when i build release apk all the font size turns into zero.

    opened by sumitkakshapati 15
  • How to calculate only safeArea

    How to calculate only safeArea

    Hello. I understand that ScreenUtil calculate device width and height and resize the widgets but how can I calculate only SafeArea? I dont want to calculate useless part of my device.

    stale 
    opened by supabase-enjoyer 14
  • Does not work for Tablets

    Does not work for Tablets

    I am using ScreenUtil and it works most of the time for Phones, however, it does not work for Tablets & iPads. Is this a problem for all or I am not correctly using the package.

    Can someone suggest the right way to use design draft? How to get the 360 and 690 for my phone as in example below & if I set this for my phone that I am using while developing the App, will this work for Tablet as well?

    //The size of the equipment in the design draft(360,690) ScreenUtil.init(constraints, designSize: Size(360, 690));

    opened by ab-dev-github 14
  •  flutter_screenutil ^5.3.1 Errors on Web Build

    flutter_screenutil ^5.3.1 Errors on Web Build "...operation '!' has type 'WidgetsBinding' which excludes null." and "Unsupported operation: Platform._operatingSystem"

    when trying to run my app onto chrome web, I'm encountering errors that I believe are triggered by flutter_screenutil ^5.3.1. I had no problem using my app on many other devices but when attempting to run it on a web page it errors, pointing to the LayoutBuilder in the screenutil_init.dart (24:14) file. I've tested it also with the default Flutter Demo counter app that comes automatically with every new project, which runs without a problem on the web without the screen_util, but as soon as I added the screen_utilin , it errored.

    here is the error message:

    Running "flutter pub get" in kakuro_sidekick_III...
    Launching lib/main.dart on Chrome in debug mode...
    Waiting for connection from debug service on Chrome...
    ../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_screenutil-5.3.1/lib/screenutil_init.dart:23:54: Warning: Operand of null-aware operation '!' has type 'WidgetsBinding' which excludes null.
     - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../Developer/flutter/packages/flutter/lib/src/widgets/binding.dart').
          data: MediaQueryData.fromWindow(WidgetsBinding.instance!.window),
                                                         ^
    DartUri: Unresolved uri: dart:web_sql
    DartUri: Unresolved uri: dart:ui
    This app is linked to the debug service: ws://127.0.0.1:56897/PISuVCiWDvU=/ws
    Debug service listening on ws://127.0.0.1:56897/PISuVCiWDvU=/ws
    
    💪 Running with sound null safety 💪
    Debug service listening on ws://127.0.0.1:56897/PISuVCiWDvU=/ws
    Flutter Web Bootstrap: Auto
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    ```
    
    ```
    The relevant error-causing widget was: 
      LayoutBuilder LayoutBuilder:file:///Users/stevebenari/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_screenutil-5.3.1/lib/screenutil_init.dart:24:14
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 864:7                                <fn>
    dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19          internalCallback
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      LayoutBuilder LayoutBuilder:file:///Users/stevebenari/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_screenutil-5.3.1/lib/screenutil_init.dart:24:14
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      LayoutBuilder LayoutBuilder:file:///Users/stevebenari/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_screenutil-5.3.1/lib/screenutil_init.dart:24:14
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      LayoutBuilder LayoutBuilder:file:///Users/stevebenari/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_screenutil-5.3.1/lib/screenutil_init.dart:24:14
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      LayoutBuilder LayoutBuilder:file:///Users/stevebenari/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_screenutil-5.3.1/lib/screenutil_init.dart:24:14
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/stevebenari/AndroidStudioProjects/kakuro_sidekick_III/lib/main.dart:400:12
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/stevebenari/AndroidStudioProjects/kakuro_sidekick_III/lib/main.dart:400:12
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/stevebenari/AndroidStudioProjects/kakuro_sidekick_III/lib/main.dart:400:12
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/stevebenari/AndroidStudioProjects/kakuro_sidekick_III/lib/main.dart:400:12
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/stevebenari/AndroidStudioProjects/kakuro_sidekick_III/lib/main.dart:400:12
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/stevebenari/AndroidStudioProjects/kakuro_sidekick_III/lib/main.dart:400:12
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/stevebenari/AndroidStudioProjects/kakuro_sidekick_III/lib/main.dart:400:12
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    
    ======== Exception caught by widgets library =======================================================
    The following UnsupportedError was thrown building LayoutBuilder:
    Unsupported operation: Platform._operatingSystem
    
    The relevant error-causing widget was: 
      ScreenUtilInit ScreenUtilInit:file:///Users/stevebenari/AndroidStudioProjects/kakuro_sidekick_III/lib/main.dart:400:12
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49     throw_
    dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart 244:5                  _operatingSystem
    dart-sdk/lib/io/platform_impl.dart 56:40                                         get operatingSystem
    dart-sdk/lib/io/platform.dart 64:45                                              get _operatingSystem
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    dart-sdk/lib/io/platform.dart 149:51                                             get isAndroid
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 839:8  get
    packages/kakuro_sidekick_iii/admob_service.dart 5:48                             get bannerAdUnitId
    packages/kakuro_sidekick_iii/admob_service.dart 15:19                            createBannerAd
    packages/kakuro_sidekick_iii/main.dart 5366:28                                   <fn>
    packages/flutter_screenutil/screenutil_init.dart 36:25                           <fn>
    packages/flutter/src/widgets/layout_builder.dart 119:70                          layoutCallback
    packages/flutter/src/widgets/framework.dart 2597:19                              buildScope
    packages/flutter/src/widgets/layout_builder.dart 153:5                           [_layout]
    packages/flutter/src/rendering/object.dart 2027:59                               <fn>
    packages/flutter/src/rendering/object.dart 918:15                                [_enableMutationsToDirtySubtrees]
    packages/flutter/src/rendering/object.dart 2027:7                                invokeLayoutCallback
    packages/flutter/src/widgets/layout_builder.dart 227:7                           rebuildIfNecessary
    packages/flutter/src/widgets/layout_builder.dart 316:5                           performLayout
    packages/flutter/src/rendering/object.dart 1917:7                                layout
    packages/flutter/src/rendering/view.dart 165:7                                   performLayout
    packages/flutter/src/rendering/object.dart 1757:7                                [_layoutWithoutResize]
    packages/flutter/src/rendering/object.dart 887:17                                flushLayout
    packages/flutter/src/rendering/binding.dart 501:19                               drawFrame
    packages/flutter/src/widgets/binding.dart 859:13                                 drawFrame
    packages/flutter/src/rendering/binding.dart 367:5                                [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1146:15                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1083:9                               handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 997:5                                [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1103:13                              invoke
    lib/_engine/engine/platform_dispatcher.dart 160:5                                invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 194:45                                    <fn>
    ====================================================================================================
    ```
    `
    opened by Sbenari 13
  • App not rendering in real device on release mode or profile mode only debug mode working

    App not rendering in real device on release mode or profile mode only debug mode working

    I have tried to solve this issue by changing emulators, Different plugin version, different flutter sdk version, following docs carefully but nothing helped.

    opened by Ahsan161815 13
  • How can I use flutter_screenutil package for my hybrid app?

    How can I use flutter_screenutil package for my hybrid app?

    Here is how I've used flutter_screenutil in my project but getting error on when I tap on Textfield. Kindly tell me how to use this package properly.

    My error:

    No Overlay widget exists above EditableText-[LabeledGlobalKey<EditableTextState>#d3506](controller: TextEditingController#dc3bb(TextEditingValue(text: ┤ghf├, selection: TextSelection.collapsed(offset: 3, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 3))), focusNode: FocusNode#482e2([PRIMARY FOCUS]), autocorrect: false, debugLabel: ((englishLike titleMedium 2014).merge(blackMountainView titleMedium)).merge(unknown), inherit: false, color: Color(0xff878787), family: EncodeSans_regular, familyFallback: [EncodeSans], size: 16.0, weight: 400, baseline: alphabetic, decoration: TextDecoration.none, textAlign: start, keyboardType: TextInputType(name: TextInputType.text, signed: null, decimal: null), autofillHints: [], dirty, dependencies: [Directionality, MediaQuery, ScrollConfiguration], state: EditableTextState#1d73f(tickers: tracking 1 ticker)). Usually the Navigator created by WidgetsApp provides the overlay. Perhaps your app content was created above the Navigator with the WidgetsApp builder parameter. 'package:flutter/src/widgets/text_selection.dart': Failed assertion: line 610 pos 7: 'overlay != null'

    My code :

    main.dart

    void main() async {
      await ScreenUtil.ensureScreenSize();
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          builder: (ctx, child) {
            ScreenUtil.init(ctx);
            return Theme(
                data: ThemeData(
                  primarySwatch: Colors.blue,
                ),
                child: const HomeScreen());
          },
        );
      }
    }
    
    

    HomeScreen.dart

    class HomeScreen extends StatefulWidget {
      const HomeScreen({Key? key}) : super(key: key);
    
      @override
      State<HomeScreen> createState() => _HomeScreenState();
    }
    
    class _HomeScreenState extends State<HomeScreen> {
      @override
      Widget build(BuildContext context) {
        ScreenUtil.init(context, designSize: const Size(360, 739));
        TextEditingController searchController = TextEditingController();
    
        return SafeArea(
          child: Scaffold(
            body: Padding(
              padding: EdgeInsets.symmetric(
                horizontal: kPaddingHorizontal,
    
              ),
              child: Column(
                children: [
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: [
                      Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: [
                          Text(
                            "Hello, Welcome",
                            style: kEncodeSansRegular.copyWith(color: kDarkBrown),
                          ),
                          SizedBox(height: 5.h),
                          Text(
                            "Hello, Welcome",
                            style: kEncodeSansBold.copyWith(color: kDarkBrown),
                          ),
                        ],
                      ),
                      CircleAvatar(
                        radius: 23.r,
                        backgroundImage: const AssetImage("assets/images/image5.png"),
                      ),
                    ],
                  ),
                  SizedBox(height: 20.h),
                  Row(children: [
                    Expanded(
                      child: TextField(
                        style: kEncodeSansRegular.copyWith(color: kDarkGrey),
                        controller: searchController,
                        keyboardType: TextInputType.text,
                        autocorrect: false,
                        decoration: InputDecoration(
                          isDense: true,
                          contentPadding: EdgeInsets.symmetric(horizontal: 10.w),
                          prefixIcon: const Icon(
                            Icons.search,
                            color: kGrey,
                          ),
                          hintText: "Search Clothes...",
                          border: kInputBorder,
                          errorBorder: kInputBorder,
                          disabledBorder: kInputBorder,
                          focusedBorder: kInputBorder,
                          focusedErrorBorder: kInputBorder,
                          enabledBorder: kInputBorder,
                          hintStyle: kEncodeSansRegular.copyWith(color: kDarkGrey),
                        ),
                      ),
                    ),
    
    opened by DevMansoor 0
  • 混合开发模式,在flutter_boost 引入flutter_screeutil 用的是文档里写的第二种初始化,

    混合开发模式,在flutter_boost 引入flutter_screeutil 用的是文档里写的第二种初始化,

    从原生跳Flutter页面第一次会黑屏几秒然后就正常看到页面 第二次之后都正常。。有什么解决方法嘛,初始化代码如下: void main() async{ ///这里的CustomFlutterBinding调用务必不可缺少,用于控制Boost状态的resume和pause MyFlutterBinding(); await ScreenUtil.ensureScreenSize(); runApp(const MyApp()); }

    Widget appBuilder(Widget home) {

    return MaterialApp(
      home: home,
      debugShowCheckedModeBanner: false,
    
      ///必须加上builder参数,否则showDialog等会出问题
      builder: (context, child) {
        ScreenUtil.init(context);
        return home;
      },
    );
    

    }

    @override Widget build(BuildContext context) { return FlutterBoostApp( routeFactory, appBuilder: appBuilder, ); }

    opened by wumeixinjiazu 0
  • 使用w固定控件高度后,在不同尺寸的手机上显示效果不同

    使用w固定控件高度后,在不同尺寸的手机上显示效果不同

    使用的size大小是 375*812 在小屏幕的手机上显示超出范围,大屏幕手机上可以正常显示 231671161789_ pic 221671161788_ pic 下面是代码 Container( margin: EdgeInsets.only(top: 20.w), alignment: Alignment.centerLeft, height: 125.w, child: Row( children: [ Image.network( "https://img0.baidu.com/it/u=2862534777,914942650&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500", width: 100.w, height: 125.w, fit: BoxFit.fill, ), Expanded(

                    child: Container(
                      color: Colors.red,
                      margin: EdgeInsets.only(left: 15.w),
                      height: 125.w,
                      alignment: Alignment.topLeft,
                      child: Column(
    
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          SizedBox(height: 3.w,),
                          Text("医学存在的终极理由课程",style: TextStyle(fontSize: 17.sp,color: Colors.black,fontWeight: FontWeight.bold),),
                          SizedBox(height: 5.w,),
                          Row(
                            children: [
                              Text("共12课时 |",style: TextStyle(fontSize: 12.sp,color: HexColor("#9f9f9f")),),
                              Text("12.4小时 |",style: TextStyle(fontSize: 12.sp,color: HexColor("#9f9f9f")),),
                              Text("分",style: TextStyle(fontSize: 12.sp,color: HexColor("#9f9f9f")),),
                            ],
                          ),
                          SizedBox(height: 10.w,),
                          Text("推荐理由",style: TextStyle(fontSize: 12.sp,color: HexColor("#61c0bf")),),
                          SizedBox(height: 10.w,),
                          Container(
                            padding: EdgeInsets.all(5.h),
                            decoration: BoxDecoration(
                              border: Border.all(color: HexColor("#e8f2f1"),width: 1.w),
                              borderRadius: BorderRadius.circular(5.w),
                            ),
                            child: Text(
                                "推荐于:由推荐理由推荐理由推荐理由,推荐理由推荐理由推荐理由",
                            style: TextStyle(fontSize: 12.sp),),
                          ),
                        ],
                      ),
                    ))
              ],
            ),
          ),
    
    opened by moujunqiang 2
  • Landscape size is not correct?

    Landscape size is not correct?

    I ran a sample device width and height checking for Portrait and Landscape mode in build(BuildContext context) {} on Oneplus 6T device and here is the output.

    PORTRAIT Device Height: 784.0 Device Width: 384.0

    LANDSCAPE Device Height: 384.0 Device Width: 755.5555555555555

    Onscreen navigation buttons were turned on. How to calculate it?

    opened by rajesh2701 0
  • 横竖屏切换BUG

    横竖屏切换BUG

    flutter_screenutil: ^5.2.0

    操作步骤:

    1. 先置为横屏
    2. 横屏状态下跳转到下一个页面
    3. 在第二个页面切为竖屏

    期待的结果: 布局尺寸不会有问题

    实际结果: 布局尺寸被放大了

    import 'package:flutter/material.dart';
    import 'package:flutter_screenutil/flutter_screenutil.dart';
    
    void main() {
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({Key? key}) : super(key: key);
    
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return ScreenUtilInit(
          designSize: const Size(375, 812),
          builder: () {
            ScreenUtil.setContext(context);
            return MaterialApp(
              title: 'Flutter Demo',
              theme: ThemeData(
                primarySwatch: Colors.blue,
              ),
              home: 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> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(widget.title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Container(height: 20.w, color: Colors.red),
                const Text(
                  'You have pushed the button this many times:',
                ),
                Container(height: 20.w, color: Colors.blue),
                Text(
                  '0',
                  style: Theme.of(context).textTheme.headline4,
                ),
                Container(height: 20.w, color: Colors.yellow),
                Icon(Icons.abc_outlined, size: 50.w),
              ],
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: () {
              Navigator.push<void>(
                context,
                MaterialPageRoute<void>(
                  builder: (BuildContext context) => const NextPage(),
                ),
              );
            },
            tooltip: 'Increment',
            child: const Icon(Icons.add),
          ),
        );
      }
    }
    
    class NextPage extends StatelessWidget {
      const NextPage({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: const Text('NextPage'),
          ),
          body: Column(
            children: [
              Container(height: 20.w, color: Colors.red),
              const Text('NextPage'),
              Container(height: 20.w, color: Colors.blue),
              Text(
                '0',
                style: Theme.of(context).textTheme.headline4,
              ),
              Container(height: 20.w, color: Colors.yellow),
              Icon(Icons.abc_outlined, size: 50.w),
            ],
          ),
        );
      }
    }
    
    
    opened by yixiu1043 11
Releases(5.0.0)
Owner
OpenFlutter
Make it easier.让Flutter更简单。
OpenFlutter
Get git information from within the Flutter application

git_info_plus Get git information from within the Flutter application. Usage Dart final String branchName = await GitInfo.branchName; final DateTime l

Akira Aratani 4 May 17, 2022
A font catalogue app made with flutter

Fontina An app which showcases a personally curated collection of fonts. Written in flutter, cross-platform and responsive. Uses the Fontgen API to di

Shreeyans Bahadkar 54 Nov 22, 2022
A font loader to download, cache and load web fonts in flutter with support for Firebase Cloud Storage.

Dynamic Cached Fonts A simple, easy to use yet customizable font loader to use web fonts. Demo: https://sidrao2006.github.io/dynamic_cached_fonts ?? I

Aneesh Rao 18 Dec 21, 2022
The Font Awesome Icon pack available as Flutter Icons

font_awesome_flutter The Font Awesome Icon pack available as set of Flutter Icons. Based on Font Awesome 5.15.4. Includes all free icons: Regular Soli

Flutter Community 731 Dec 28, 2022
Create bulk instagram quotes posts with custom background, style, font, size. built using flutter

Mini Canva minicanva.com Bulk Image Generator from given list of quotes, lines ?? Purpose Etsy is an E-commerce platform where we can sell digital goo

Ashish Pipaliya 7 Oct 29, 2022
Scale the entire UI design proportionally. Button, image, font, everything is scaled automatically

Scale the entire UI design proportionally. Button, image, font, everything is scaled automatically. Before: 250x250 square is the same size across dev

Wildcard 3 Sep 25, 2022
DDC Font App for iOS

DDC Font App for iOS This is the project code for DDC Font app. Do check out locally and update or refector the code with suitable message. Note on iO

Kinley Rabgay 2 Aug 31, 2022
A better font for golden tests.

A better font for golden tests. This project is a Flutter Bounty Hunters proof-of-concept. Want font adjustments? Fund a milestone today! Golden Brick

Flutter Bounty Hunters 3 Dec 14, 2022
Generate secure passwords, check for exposed passwords, get visual feedback for password strength or get form validation with a minimum password strength required.

password_strength_checker Generate secure passwords, check for exposed passwords, get visual feedback for password strength or get form validation wit

Dario Varriale 6 Aug 8, 2023
This plugin allows Flutter desktop apps to Retrieve information about screen size, displays, cursor position, etc.

screen_retriever This plugin allows Flutter desktop apps to Retrieve information about screen size, displays, cursor position, etc. screen_retriever P

LeanFlutter 27 Dec 6, 2022
Doctor Consultation App in Flutter containing splash screen on boarding screen Routing state management Dash board Bottom navigation Decorated Drawer and Doctors Screen in the last.

Online doctor Consultation App UI in Flutter Doctor Consultation App UI in Flutter Visit Website Features State Management Navigation Bar Responsive D

Habib ullah 14 Jan 1, 2023
Android test task master - Create PIN code screen, authentication by PIN code screen and menu screen

Here is described test tasks for a android dev. Need to implement three screens:

null 3 Oct 4, 2022
Create a Flutter User Profile Page UI where you can access and edit your user's information within your Flutter app.

Flutter Tutorial - User Profile Page UI 1/2 Create a Flutter User Profile Page UI where you can access and edit your user's information within your Fl

Johannes Milke 46 Dec 6, 2022
Create a Flutter User Profile Page UI where you can access and edit your user's information within your Flutter app.

Flutter Tutorial - User Profile Page UI #2 Create a Flutter User Profile Page UI where you can access and edit your user's information within your Flu

Johannes Milke 45 Dec 15, 2022
Let's create a complete Flutter User Profile Page with SharedPreferences to persist the user's information in Flutter.

Flutter Tutorial - User Profile & SharedPreferences Let's create a complete Flutter User Profile Page with SharedPreferences to persist the user's inf

Johannes Milke 21 Dec 3, 2022
Flutter guide + SDK. Check Community repository for common information.

freeRASP for Flutter freeRASP for Flutter is a part of security SDK for the app shielding and security monitoring. Learn more about provided features

Talsec 63 Dec 26, 2022
An app made using the Flutter framework that allows users to track information for over 1500 cryptocurrencies

Platypus Crypto Platypus Crypto is an ad-free cross-platform robust solution for tracking cryptocurrency assets. Our intuitive interface includes real

null 179 Jan 4, 2023
Flutter's application that provides information about Covid-19 in Indonesia

Info Covid-19 Flutter's application that provides information about Covid-19 in Indonesia Report Bug · Request Feature Table of Contents About the Pro

Benidiktus BT 4 Dec 23, 2021