Search code examples
flutterdartflutter-layoutdart-null-safety

is it possible to pass the parameter without required in flutter


is it possible to pass this.title without required, i have seen some tutorial they doing so, but when i try it asks me to add required to this.title. As my 2 screen doesn't contain appBar title i want to pass it without required. is it possible?

here my code works fine if i add required to this.title.

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

import '../../logic/cubit/counter_cubit.dart';

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

final String title;

@override
State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
[SS of code][1]

Solution

  • The title needs to be required because you made it not nullable. You can make it nullable if the title is optional:

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

    However, now you need to handle the fact that you may not have a title in your build function:

    class _HomeScreenState extends State<HomeScreen> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(widget.title ?? "NO TITLE!?!"),
          ),
         );
      }
    }
    

    Obviously you don't want "NO TITLE!?!" to be in your title, but since I don't know what you want instead, you will have to change that part.