Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

final VoidCallback press; (Textbutton, onPressed()) occurs error on Flutter

Hello I’m recently learning Flutter on VScode and i need to link 2 screens together via a Textbutton
but it doesn’t recognize itself when i put a function to move on to next screen.
The button only displays properly when i put press: null in body.dart code.

press: () {} not working

this is a part of my body.dart code:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

import 'package:shopping/components/default_button.dart';

  @override
  _BodyState createState() => _BodyState();
}
@override
  Widget build(BuildContext context) {
    return SafeArea(
      child: SizedBox(
        width: double.infinity,
        child: Column(
          children: <Widget>[
            Expanded(
              flex: 3,
              child: PageView.builder(
                onPageChanged: (value) {
                  setState(() {
                    currentPage = value;
                  });
                },
                itemCount: splashData.length,
                itemBuilder: (context, index) => SplashContent(
                  image: splashData[index]["image"]!,
                  text: splashData[index]['text']!,
                ),
              ),
            ),
            Expanded(
              flex: 2,
              child: Padding(
                padding: EdgeInsets.symmetric(
                    horizontal: getProportionateScreenWidth(20)),
                child: Column(
                  children: <Widget>[
                    const Spacer(),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: List.generate(
                        splashData.length,
                        (index) => buildDot(index: index),
                      ),
                    ),
                    const Spacer(flex: 3),
                    const DefaultButton(
                      text: "ok",
                      press: () {
                        Navigator.pushNamed(context, LoginPage.routeName); <<< press can't recognize () {}
                      },
                    ),
                    const Spacer(),
                  ],
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }

and this is default_button.dart:

import 'package:flutter/material.dart';
import '../size_config.dart';

class DefaultButton extends StatelessWidget {
  const DefaultButton({
    Key? key,
    required this.text,
    required this.press,
  }) : super(key: key);
  final String? text;
  final VoidCallback press;

  @override
  Widget build(BuildContext context) {
    return SizedBox(
      width: double.infinity,
      height: getProportionateScreenHeight(56),
      child: TextButton(
        style: TextButton.styleFrom(
          foregroundColor: Colors.white,
          textStyle:
              const TextStyle(fontFamily: 'suite', fontWeight: FontWeight.w500),
          backgroundColor: const Color.fromRGBO(171, 204, 51, 1),
          shape: const StadiumBorder(),
        ),
        onPressed: press,
        child: Text(text!),
      ),
    );
  }
}

I put every packages correctly,
checked the code that defined the settings for Textbutton,
and changed final Function press; into > final VoidCallback press; but nothing happened.

>Solution :

just remove the const keyword

                    DefaultButton(
                      text: "ok",
                      press: () {
                        Navigator.pushNamed(context, LoginPage.routeName); <<< press can't recognize () {}
                      },
                    ),

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading