tsb5555
tsb5555

Reputation: 381

Is creating a stateful widget with a generic data type <T> passed to the state in Flutter a good practice?

I have created a widget in Flutter as follows:

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


class WidgetA<T> extends StatefulWidget {
  const WidgetA({
    super.key,
    required this.errorSelector,
    ...
  });
  final Function errorSelector;
  ...


  @override
  State<WidgetA> createState() =>
      _WidgetAState<T>();
}

class _WidgetAState<T> extends State<WidgetA> {

  ...

  @override
  Widget build(BuildContext context) {
    ...
    return  Builder(
          builder: (ctx) {
            final String foo =
                ctx.select(widget.errorSelector as String Function(T));
            return Text(foo);
          }
    );
  }
}

Is this practice okay? Are there better ways to accomplish this? Can this cause any issues?

FYI - T is being used to pass a Class that extends a Bloc.

Upvotes: 2

Views: 560

Answers (1)

Gwhyyy
Gwhyyy

Reputation: 9166

it's not bad and it's not good unless you have a good reason to do it (for example if you want to customize a data type based on that generic ).

so before doing it, ask yourself why so I need to make it generic, all the good patterns in the code are there to add some value to the code.

as you can see the only place where the generic is important is to set it in the State object, this prevents conflicting your StatefulWidget in your app with others and specify it to one StatefulWidget

Upvotes: 1

Related Questions