skip to Main Content

I have a problem with Flutter…. I don’t understand why the elements are underlined in red… Can you help me?

import 'package:flutter/material.dart';

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

  @override
  Widget build(BuildContext context) {
    final size = MediaQuery.of(context).size;
    return Scaffold(
      body: SafeArea(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: const [
            SizedBox(height: 50),
            Text(
              'Welcome to app',
              style: TextStyle(
                fontSize: 33,
                fontWeight: FontWeight.w600,
              ),
            ),
            SizedBox(height: size.height / 9),
            Image.asset(
              'assets/bg.png',
              height: 340,
              width: 340,
            ),
          ],
        ),
      ),
    );
  }
}

here is the photo with the code underlined in red

2

Answers


  1. use this method,

              Image(
                    image: const AssetImage("assets/bg.png"),
                    height: 340,
                    width: 340,
                      ),
    

    Full code:

    import 'package:flutter/material.dart';
    
    class LandingScreen extends StatelessWidget {
      const LandingScreen({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        final size = MediaQuery.of(context).size;
        return Scaffold(
          body: SafeArea(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.center,
              children: const [
                SizedBox(height: 50),
                Text(
                  'Welcome to app',
                  style: TextStyle(
                    fontSize: 33,
                    fontWeight: FontWeight.w600,
                  ),
                ),
                SizedBox(height: size.height / 9),
                Image(
                    image: const AssetImage("assets/bg.png"),
                    height: 340,
                    width: 340,
                 ),
              ],
            ),
          ),
        );
      }
    }
    
    Login or Signup to reply.
  2. The issue is coming because you are using const on children: const [.

    But you are reading size.height on runtime. Therefore it can’t be const.

    You can do

    class LandingScreen extends StatelessWidget {
      const LandingScreen({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        final size = MediaQuery.of(context).size;
        return Scaffold(
          body: SafeArea(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                const SizedBox(height: 50),
                const Text(
                  'Welcome to app',
                  style: TextStyle(
                    fontSize: 33,
                    fontWeight: FontWeight.w600,
                  ),
                ),
                SizedBox(height: size.height / 9),
                Image.asset(
                  'assets/bg.png',
                  height: 340,
                  width: 340,
                ),
              ],
            ),
          ),
        );
      }
    }
    

    You can check "const" and "final" keywords in Dart?

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search