- React
- React Native
- JavaScript SDK
- Flutter
- Unity
Copy
Ask AI
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
const SignMessageButton = () => {
const { primaryWallet } = useDynamicContext();
const signMessage = async () => {
if (!primaryWallet) return;
const signature = await primaryWallet.signMessage('example');
console.log('signature', signature);
};
return <button onClick={signMessage}>Sign message</button>;
};
React Native
Copy
Ask AI
// Requires setting up the RN Viem extension
// See: /react-native/wallets/viem
import { dynamicClient } from '<path-to-your-dynamicClient>'; // extended with ViemExtension
export const signMessage = async () => {
const wallet = dynamicClient.wallets.primary;
if (!wallet) return;
const walletClient = dynamicClient.viem.createWalletClient({ wallet });
const signature = await walletClient.signMessage({ message: 'example' });
console.log('signature', signature);
}
Use the standalone client helpers to handle signing and preflight availability checks.If the wallet app needs the account to be active in its UI, the helpers throw
Copy
Ask AI
import {
assertWalletAccountSigningAvailability,
signMessage,
} from '@dynamic-labs-sdk/client';
export async function signWithClient(walletAccount, message) {
await assertWalletAccountSigningAvailability({ walletAccount });
const { signature } = await signMessage({ walletAccount, message });
return signature;
}
WalletAccountNotSelectedError. Prompt the user to switch the active account in their wallet before retrying.Use dynamic_sdk_web3dart package for this
Copy
Ask AI
final response = await DynamicSDK.instance.wallets.signMessage(
message: _controller.text,
wallet: widget.wallet,
);
Copy
Ask AI
void Awake(){
DynamicSDKManager.Instance.OnMessageSigned += MessageSigned;
DynamicSDKManager.Instance.SignMessage("Hello World");
}
void MessageSigned(string signedMessage)
{
Debug.Log("Message Signed");
}