1
resposta

The method 'bloc' isn't defined for the type 'BuildContext'.

bom dia, esta com o seguinte erro :( context.bloc().change(name);) The method 'bloc' isn't defined for the type 'BuildContext'.

class NameView extends StatelessWidget { final TextEditingController _nameController = TextEditingController();

@override Widget build(BuildContext context) { // agora não tem problema essa abordagem // pois não vamos fazer um rebuild quando o estado é alterado _nameController.text = context.bloc().state; return Scaffold( appBar: AppBar(title: const Text("Change name")), body: Column( children: [ TextField( controller: _nameController, decoration: InputDecoration( labelText: "Desired name", ), style: TextStyle( fontSize: 24.0, ), ), Padding( padding: const EdgeInsets.only(top: 16.0), child: SizedBox( width: double.maxFinite, child: RaisedButton( child: Text("Change"), onPressed: () { final name = _nameController.text; context.bloc().change(name); Navigator.pop(context); }, ), ), ), ], ), ); } }

1 resposta

Bom dia,

acredito que só esteja faltando definir o tipo no bloc:context.bloc< NameCubit >()

 onPressed: () {
                  final name = _nameController.text;
                  context.bloc<NameCubit>().change(name);
                  Navigator.pop(context);

E aqui também

_nameController.text = context.bloc<NameCubit>().state;

Class NameView:

...
class NameView extends StatelessWidget {
  final TextEditingController _nameController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    // agora não tem problema essa abordagem
    // pois não vamos fazer um rebuild quando o estado é alterado
    _nameController.text = context.bloc<NameCubit>().state;
    return Scaffold(
      appBar: AppBar(title: const Text("Change name")),
      body: Column(
        children: [
          TextField(
            controller: _nameController,
            decoration: InputDecoration(
              labelText: "Desired name",
            ),
            style: TextStyle(
              fontSize: 24.0,
            ),
          ),
          Padding(
            padding: const EdgeInsets.only(top: 16.0),
            child: SizedBox(
              width: double.maxFinite,
              child: RaisedButton(
                child: Text("Change"),
                onPressed: () {
                  final name = _nameController.text;
                  context.bloc<NameCubit>().change(name);
                  Navigator.pop(context);
                },
              ),
            ),
          ),
        ],
      ),
    );
  }
}
 ...