1
resposta

Duvida em contexto nao aceitando o valor null em InheritedWidget

Estou criando um form a partir da aula de inheritedWidget mas ele nao esta aceitando que seja passado o valor null no contexto e eu preciso que ele seja required justamente para realizar navegação de uma tela a outra em um menu que criei, alguem poderia me dizer como passo um parametro nesse caso ? Seria o seguinte código...

import 'package:flutter/material.dart'; import 'package:flutter_project2/pages/banks.dart';

class BankInherited extends InheritedWidget { BankInherited({ Key? key, required Widget child, }) : super(key: key, child: child);

final List BanksList = [Banks('Bradesco', 16548, 15823, banksContext: null,)]; void newBanks (String bank, int agency, int account) { BanksList.add(Banks(bank, agency, account, banksContext: null,)); }

static BankInherited of(BuildContext context) { final BankInherited? result = context.dependOnInheritedWidgetOfExactType(); assert(result != null, 'No BanksInherited found in context'); return result!; }

@override bool updateShouldNotify(BankInherited old) { return old.BanksList.length != BanksList.length ; } // }

1 resposta

Olá, Nathália!

Pelo que entendi, você está tendo dificuldades em passar um valor null no contexto do InheritedWidget. No seu código, o parâmetro "banksContext" está sendo definido como null e você precisa que ele seja obrigatório para realizar a navegação entre telas.

Uma possível solução para esse problema é utilizar um valor padrão no lugar do null. Por exemplo, você pode definir um valor default para o parâmetro "banksContext", como um contexto vazio ou um contexto específico que você queira utilizar como padrão.

Aqui está um exemplo de como você pode fazer isso:

class BankInherited extends InheritedWidget { 
  BankInherited({
    Key? key,
    required Widget child, 
  }) : super(key: key, child: child);

  final List<Banks> BanksList = [Banks('Bradesco', 16548, 15823, banksContext: EmptyBuildContext())];
  void newBanks (String bank, int agency, int account) {
    BanksList.add(Banks(bank, agency, account, banksContext: EmptyBuildContext()));  
  }

  static BankInherited of(BuildContext context) { 
    final BankInherited? result = context.dependOnInheritedWidgetOfExactType<BankInherited>();
    assert(result != null, 'No BanksInherited found in context');
    return result!;
  }

  @override
  bool updateShouldNotify(BankInherited old) { 
    return old.BanksList.length != BanksList.length ; 
  } 
}

class EmptyBuildContext extends BuildContext {
  // Implementação vazia do BuildContext
}

Nesse exemplo, criei uma classe chamada EmptyBuildContext que herda de BuildContext e a utilizei como valor padrão para o parâmetro "banksContext". Dessa forma, mesmo que o valor seja null, ele será substituído por um contexto vazio.

Espero que essa solução seja útil para você! Se tiver mais alguma dúvida, é só perguntar. Espero ter ajudado e bons estudos!