Skip to main content

Theming

To theme the Web3Modal you must wrap your MaterialApp with a Web3ModalTheme widget.

return Web3ModalTheme(
child: MaterialApp(
...
),
);

Default themes​

Web3ModalTheme already comes with 2 default themes.
A light option: Web3ModalColors.lightMode
A dark option: Web3ModalColors.darkMode.
You can switch between them by toggling the isDarkMode: parameter in Web3ModalTheme like so:

return Web3ModalTheme(
isDarkMode: _isDarkMode,
child: MaterialApp(
...
),
);

Custom themes​

You can define your own light and dark themes by tweaking Web3ModalThemeData parameters. For instance, if you want to change the main foreground and background color you could do:

final _themeData = Web3ModalThemeData(
lightColors: Web3ModalColors.lightMode.copyWith(
accent100: Colors.red,
background125: Colors.yellow.shade300,
),
darkColors: Web3ModalColors.darkMode.copyWith(
accent100: Colors.green,
background125: Colors.brown,
),
);

and pass this object to Web3ModalTheme's themeData: parameter:

return Web3ModalTheme(
isDarkMode: _isDarkMode,
themeData: _themeData,
child: MaterialApp(
...
),
);

Preset theme shortcuts​

Web3ModalTheme comes with default border radiuses but you can override these values by passing your own values to Web3ModalRadiuses() object and then adding this object to Web3ModalThemeData's radiuses: parameter.

But you can also set no corner radiuses at all by setting this value to Web3ModalRadiuses.square or everything circular by using Web3ModalRadiuses.circular

final _themeData = Web3ModalThemeData(
lightColors: Web3ModalColors.lightMode.copyWith(
accent100: Colors.red,
background125: Colors.yellow.shade300,
),
darkColors: Web3ModalColors.darkMode.copyWith(
accent100: Colors.green,
background125: Colors.brown,
),
// No corner radius, modal will look square, use Web3ModalRadiuses.circular to make everything circular
radiuses: Web3ModalRadiuses.square,
);
info

If you don't wrap your MaterialApp with a Web3ModalTheme widget, the Web3Modal will use the default light theme.

Web3ModalTheme is an InheritedWidget so it comes with a few handy methods for you to use:

Check if the current time is dark:

final isDarkMode = Web3ModalTheme.of(context).isDarkMode;
final isMaybeDarkMode = Web3ModalTheme.maybeOf(context)?.isDarkMode;

Get current Web3ModalThemeData object:

final data = Web3ModalTheme.getDataOf(context);

Get current Web3ModalColors object:

final colors = Web3ModalTheme.colorsOf(context);

You can build your own theme by creating a Web3ModalThemeData object. (More and easier customization options will come in the future)