首页 > 其他分享 >Blazor 跨平台的、共享一套UI的天气预报 Demo

Blazor 跨平台的、共享一套UI的天气预报 Demo

时间:2023-05-31 09:00:20浏览次数:44  
标签:类库 WebAssembly Demo 跨平台 YourWeather UI Blazor WPF Winform

1. 前言

很久之前就读过 dotnet9 大佬的一篇文章,MAUI与Blazor共享一套UI,媲美Flutter,实现Windows、macOS、Android、iOS、Web通用UI,没读过的可以读一读,写的很好。

对Blazor跨平台开始比较感兴趣。

渐渐发现Blazor Hybrid可以在更多的框架上运行,如Winform、WPF,更有Photino这样可以在Linux上运行的框架,Blazor的可玩性越来越高了。

所以写了一个支持尽可能多的Blazor模式的Demo,多个项目共用一个Rcl(Razor类库),能够在多个平台以不同的方式跑起来。

通过天气API获取当前天气和天气预报,可以切换天气源,也可以选择指定位置的天气。

2. 先看一下效果

Blazor WebAssembly: 在线演示地址

MAUI、Winform、WPF: Github Releases

截图

Blazor WebAssembly Blazor Server MAUI Android
Winform WPF
MAUI Windows Photino Linux(Deepin V23)

3 项目结构

  • YourWeather:Maui Blazor 项目

  • YourWeather.Client:Blazor WebAssembly 项目

  • YourWeather.Photino:Photino Blazor 项目

  • YourWeather.Rcl:Razor类库,存放页面和一些基础实现

  • YourWeather.Rcl.Desktop:Winform和WPF共用的类库

  • YourWeather.Rcl.Web:WebAssembly 和 Server 共用的类库

  • YourWeather.Server:Blazor Server 项目

  • YourWeather.Shared:共用的接口和模型

  • YourWeather.Winform:Winform 项目

  • YourWeather.Wpf:WPF 项目

4 新建模板

安装 MASA.Template

dotnet new install Masa.Template::1.0.0-rc.2

在同一解决方案下新建这四个后,只需稍作改动即可

5 源码:

标签:类库,WebAssembly,Demo,跨平台,YourWeather,UI,Blazor,WPF,Winform
From: https://www.cnblogs.com/Yu-Core/p/17383541.html

相关文章

  • 【Unity】记录一下:自定义组件的InspectorGUI面板,修改数据不保存问题
    使用target修改之后需要使用EditorUtility.SetDirty设置为脏,但是要注意的是应该设置target所指代的组件,而非是对.gameObject设置为脏,这是没有用的。[CustomEditor(typeof(MerryGoRound))]publicclassMerryGoRoundEditor:Editor{publicoverridevoidOnInspectorGUI(......
  • shellcode的一个demo例子
    handy-shellcodeBinaryExploitation,50pointsDescription:Thisprogramexecutesanyshellcodethatyougiveit.Canyouspawnashellandusethattoreadtheflag.txt?#include<stdio.h>#include<stdlib.h>#include<string.h>#include&l......
  • AI demo framework
     importpickleimportmatplotlib.pyplotaspltfromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.neighborsimportKNeighborsClassifierfromsklearn.model_selectionimportcross_val_scorefromsklearnimportm......
  • Intel daal4py demo运行过程
    daal安装(记得先安装anaconda):gitclonehttps://github.com/IntelPython/daal4py.gitcddaal4pycondacreate-nDAAL4PY-cintel-cintel/label/test-cconda-forgepython=3.6mpichcnctbb-develdaaldaal-includecythonjinja2numpysourceactivateDAAL4PYexportC......
  • AngularJS2.0 quick start——其和typescript结合需要额外依赖
    AngularJS2发布于2016年9月份,它是基于ES6来开发的。运行条件!由于目前各种环境(浏览器或Node)暂不支持ES6的代码,所以需要一些shim和polyfill(IE需要)让ES6写的代码能够转化为ES5形式并可以正常运行在浏览器中。从上图可以看出在Es5浏览器下需要以下模块加载器:systemjs -通用模块......
  • StringBuilder
               ......
  • com.gitHub.pageHelper.PageHelper cannot be cast to org.apache.ibatis.pluin.Inter
    可能是因为版本冲突问题PageHelper5之前与之后是配置文件有发生变化,下面这个是使用pageHelper5.1.18jar包导入。使用PageHelper分页插件(使用spring+分页插件的方式)结果忘记把mybatis的分页插件和依赖去除,结果导致排错很久(怀疑是版本冲突的问题)附上正确用法:pom文件:<dependency......
  • Druid使用实例
    当然,以下是一个详细的Druid示例代码,演示了如何配置和使用Druid连接池:importcom.alibaba.druid.pool.DruidDataSource;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;publicclassDruidDemo{......
  • Unity发布IOS发布Android版本出现屏幕问题 UGUI半屏被压缩 另一半黑屏
    项目场景:用Unity做的app发布的ios和Android版本,ui做屏幕自适应,来适配多机型,unity版本是2019.4,用的UGUI。问题描述:极个别机型有个偶发的问题,就是在app息屏,再开屏的时候,会出现半边屏幕被压缩,半边屏幕黑屏的问题,但是ui交互的位置还是正常的,bug效果图如下:跟这张图一样的<hrstyle="bor......
  • SwiftUI 使用contentShape()控制点击区域
    当我们向一个view添加TapGesture时,就会发现“有内容”的区域是可以点击的。“有内容”指的是有图片、文字、背景颜色的区域。而空白区域,是不能触发点击回调的。比如:structContentView:View{varbody:someView{VStack(spacing:124){Image(sys......