1import Ionicons from '@expo/vector-icons/build/Ionicons'; 2import MaterialIcons from '@expo/vector-icons/build/MaterialIcons'; 3import { Assets as StackAssets } from '@react-navigation/elements'; 4import { Asset } from 'expo-asset'; 5import * as Font from 'expo-font'; 6import { Platform } from 'react-native'; 7 8async function loadAssetsAsync() { 9 const assetPromises: Promise<any>[] = [ 10 Asset.loadAsync(StackAssets), 11 Font.loadAsync(Ionicons.font), 12 Font.loadAsync(MaterialIcons.font), 13 Font.loadAsync({ 14 'space-mono': require('../../assets/fonts/SpaceMono-Regular.ttf'), 15 }), 16 ]; 17 if (Platform.OS !== 'web') { 18 assetPromises.push( 19 Font.loadAsync({ 20 Roboto: 'https://github.com/google/fonts/raw/d1a2e0f/ofl/roboto/static/Roboto-Regular.ttf', 21 }) 22 ); 23 } 24 await Promise.all(assetPromises); 25} 26 27let oncePromise: Promise<void>; 28export default function loadAssetsAsyncOnce() { 29 oncePromise = oncePromise || loadAssetsAsync(); 30 return oncePromise; 31} 32