From 8301008d07822a41c42f96b4cadb4969c3dff53d Mon Sep 17 00:00:00 2001 From: poka <poka@p2p.legal> Date: Mon, 17 Mar 2025 23:40:05 +0100 Subject: [PATCH] fix 5.dart mnemonic Null check operator used on a null value --- lib/providers/generate_wallets.dart | 5 +- lib/screens/onBoarding/5.dart | 88 +++++++++++++++-------------- 2 files changed, 49 insertions(+), 44 deletions(-) diff --git a/lib/providers/generate_wallets.dart b/lib/providers/generate_wallets.dart index 20c285ee..3218d721 100644 --- a/lib/providers/generate_wallets.dart +++ b/lib/providers/generate_wallets.dart @@ -150,8 +150,9 @@ class GenerateWalletsProvider with ChangeNotifier { notifyListeners(); } - Future<List<String>> generateWordList(BuildContext context) async { + Future<List<String>?> generateWordList(BuildContext context) async { final sub = Provider.of<SubstrateSdk>(context, listen: false); + if (!sub.sdkReady) return null; generatedMnemonic = await sub.generateMnemonic(lang: appLang); List<String> wordsList = []; @@ -328,9 +329,11 @@ class GenerateWalletsProvider with ChangeNotifier { } Future<bool> scanRootBalance(SubstrateSdk sub, int currentChestNumber, String pinCode) async { + if (sub.currencyParameters['ss58'] == null || generatedMnemonic == null) return false; final addressData = await sub.sdk.api.keyring.addressFromMnemonic(sub.currencyParameters['ss58']!, cryptoType: CryptoType.sr25519, mnemonic: generatedMnemonic!); + if (addressData.address == null) return false; final balance = await sub.getBalance(addressData.address!).timeout( const Duration(seconds: 1), onTimeout: () => {}, diff --git a/lib/screens/onBoarding/5.dart b/lib/screens/onBoarding/5.dart index 0c347dbe..b83780fc 100644 --- a/lib/screens/onBoarding/5.dart +++ b/lib/screens/onBoarding/5.dart @@ -32,6 +32,8 @@ class OnboardingStepFive extends StatefulWidget { class _ChooseChestState extends State<OnboardingStepFive> { List<String>? mnemonicList; bool isLoading = false; + final generateWalletProvider = Provider.of<GenerateWalletsProvider>(homeContext, listen: false); + bool get isMnemonicGenerated => generateWalletProvider.generatedMnemonic != null; @override void initState() { @@ -40,11 +42,10 @@ class _ChooseChestState extends State<OnboardingStepFive> { } Future<void> _generateMnemonicList() async { - final generateWalletProvider = Provider.of<GenerateWalletsProvider>(context, listen: false); final list = await generateWalletProvider.generateWordList(context); if (mounted) { setState(() { - mnemonicList = list.cast<String>(); + mnemonicList = list?.cast<String>(); isLoading = false; }); } @@ -140,8 +141,6 @@ class _ChooseChestState extends State<OnboardingStepFive> { @override Widget build(BuildContext context) { - final generateWalletProvider = Provider.of<GenerateWalletsProvider>(context, listen: false); - return Scaffold( backgroundColor: backgroundColor, appBar: GeckoAppBar('yourMnemonic'.tr()), @@ -171,10 +170,12 @@ class _ChooseChestState extends State<OnboardingStepFive> { backgroundColor: orangeC, elevation: 1, ), - onPressed: () { - Clipboard.setData(ClipboardData(text: generateWalletProvider.generatedMnemonic!)); - snackCopySeed(context); - }, + onPressed: isMnemonicGenerated + ? () { + Clipboard.setData(ClipboardData(text: generateWalletProvider.generatedMnemonic!)); + snackCopySeed(context); + } + : null, child: Row(children: <Widget>[ Image.asset( 'assets/walletOptions/copy-white.png', @@ -252,44 +253,45 @@ class _ChooseChestState extends State<OnboardingStepFive> { ), ); } -} -Widget nextButton(BuildContext context, String text, bool isFast, bool skipIntro) { - final generateWalletProvider = Provider.of<GenerateWalletsProvider>(context, listen: false); - final myWalletProvider = Provider.of<MyWalletsProvider>(context, listen: false); - return ScaledSizedBox( - width: 350, - height: 55, - child: ElevatedButton( - key: keyGoNext, - style: ElevatedButton.styleFrom( - foregroundColor: Colors.white, - backgroundColor: orangeC, - elevation: 2, - padding: const EdgeInsets.symmetric(vertical: 8), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(16), + Widget nextButton(BuildContext context, String text, bool isFast, bool skipIntro) { + final myWalletProvider = Provider.of<MyWalletsProvider>(context, listen: false); + return ScaledSizedBox( + width: 350, + height: 55, + child: ElevatedButton( + key: keyGoNext, + style: ElevatedButton.styleFrom( + foregroundColor: Colors.white, + backgroundColor: orangeC, + elevation: 2, + padding: const EdgeInsets.symmetric(vertical: 8), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + shadowColor: orangeC.withValues(alpha: 0.3), ), - shadowColor: orangeC.withValues(alpha: 0.3), - ), - onPressed: () { - generateWalletProvider.nbrWord = generateWalletProvider.getRandomInt(); - generateWalletProvider.nbrWordAlpha = generateWalletProvider.intToString(generateWalletProvider.nbrWord + 1); - myWalletProvider.mnemonic = generateWalletProvider.generatedMnemonic!; + onPressed: isMnemonicGenerated + ? () { + generateWalletProvider.nbrWord = generateWalletProvider.getRandomInt(); + generateWalletProvider.nbrWordAlpha = generateWalletProvider.intToString(generateWalletProvider.nbrWord + 1); + myWalletProvider.mnemonic = generateWalletProvider.generatedMnemonic!; - Navigator.push( - context, - FaderTransition(page: OnboardingStepSix(generatedMnemonic: generateWalletProvider.generatedMnemonic, skipIntro: skipIntro), isFast: true), - ); - }, - child: Text( - text, - style: scaledTextStyle( - fontSize: 18, - fontWeight: FontWeight.w500, - color: Colors.white, + Navigator.push( + context, + FaderTransition(page: OnboardingStepSix(generatedMnemonic: generateWalletProvider.generatedMnemonic, skipIntro: skipIntro), isFast: true), + ); + } + : null, + child: Text( + text, + style: scaledTextStyle( + fontSize: 18, + fontWeight: FontWeight.w500, + color: Colors.white, + ), ), ), - ), - ); + ); + } } -- GitLab