First check the load status of your layer (or just call `await layer.LoadAsync()` ) and inspect the error (if there is one). If it loads fine, check the LayerViewState for the layer on the MapView instance.
When you say the layer view state even is giving 'null' what do you mean? You should be getting events for each layer, and there is a status as well as potentially an error object. The status is the most interesting thing.
My guess is the spatial reference of your WMTS service doesn't match that of your basemap, and tiles services doesn't support reprojection. The view state should tell you if that is happening.
You can also try to remove the basemap and only have your WMTS layer, so that the map would assume the spatial reference of your WMTS layer instead.
One common problem for WMTS layers not displaying is: incompatible spatial references between the Map and the layer.
Check the TileMatrixSets property of your WmtsLayerInfo -- each tile matrix set has a SpatialReference. You want to use a tile matrix set with the same spatial reference as your Map. Normally WmtsLayer will automatically choose the first compatible set (if the server has any) but you can also use the WmtsLayer constructor that takes a WmtsTileMatrixSet.
If the service does not have any WmtsTileMatrixSet compatible with the Map, you may have to use a different SpatialReference for your Map, re-publish the WMTS service with a different tile set, or use a different service type that supports reprojection (e.g. WMS or ArcGIS MapService).