public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();

        builder
        .UseMauiApp <App>()
        .UseMobileBlazorBindings()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
        });

        builder.Services.AddMauiBlazorWebView();
        builder.Services.AddSingleton <CounterState>();

        return(builder.Build());
    }
示例#2
0
        public void EnsureHandlerCreated(Action <MauiAppBuilder> additionalCreationActions = null)
        {
            if (_isCreated)
            {
                return;
            }

            _isCreated = true;
            var appBuilder = MauiApp
                             .CreateBuilder();

            additionalCreationActions?.Invoke(appBuilder);

            _mauiApp = appBuilder.Build();

            _mauiContext = new ContextStub(_mauiApp.Services);
        }
示例#3
0
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();

            builder
            .RegisterBlazorMauiWebView()
            .UseMauiApp <App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

            builder.Services.AddBlazorWebView();
            builder.Services.AddSingleton <WeatherForecastService>();

            return(builder.Build());
        }
示例#4
0
        public void GetServiceHandlesUsesCorrectCtor_DefaultWithBar()
        {
            var builder = MauiApp.CreateBuilder();

            builder.Services.AddTransient <IBarService, BarService>();
            builder.Services.AddTransient <IFooBarService, FooTrioConstructor>();
            var mauiApp = builder.Build();

            var service = mauiApp.Services.GetService <IFooBarService>();

            var trio = Assert.IsType <FooTrioConstructor>(service);

            Assert.Null(trio.Foo);
            Assert.Null(trio.Bar);
            Assert.Null(trio.Cat);
            Assert.Equal("()", trio.Option);
        }
示例#5
0
        public void CanSpecifyHandler()
        {
            var mauiApp = MauiApp.CreateBuilder()
                          .UseMauiApp <ApplicationStub>()
                          .ConfigureMauiHandlers(handlers => handlers.AddHandler <Button, ButtonHandlerStub>())
                          .Build();

            Assert.NotNull(mauiApp.Services);
            var handlers = mauiApp.Services.GetRequiredService <IMauiHandlersFactory>();

            Assert.NotNull(handlers);

            var specificHandler = handlers.GetHandler(typeof(Button));

            Assert.NotNull(specificHandler);
            Assert.AreEqual(typeof(ButtonHandlerStub), specificHandler.GetType());
        }
示例#6
0
        public void GetServiceCanReturnTypesThatHaveRegisteredConstructorParamsAndHaveDefaultValues()
        {
            var builder = MauiApp.CreateBuilder();

            builder.Services.AddTransient <IBarService, BarService>();
            builder.Services.AddTransient <IFooBarService, FooDefaultValueConstructor>();
            var mauiApp = builder.Build();

            var foo = mauiApp.Services.GetService <IFooBarService>();

            Assert.NotNull(foo);

            var actual = Assert.IsType <FooDefaultValueConstructor>(foo);

            Assert.NotNull(actual.Bar);
            Assert.IsType <BarService>(actual.Bar);
        }
示例#7
0
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();

            builder
            .RegisterBlazorMauiWebView()
            .UseMauiApp <App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

            var configuration = builder.Configuration;

            configuration.AddInMemoryCollection(new Dictionary <string, string>
            {
                ["apiBaseUrl"] = "https://theidserver-duende.herokuapp.com/api",
                ["authenticationPaths:remoteRegisterPath"] = "/identity/account/register",
                ["authenticationPaths:remoteProfilePath"]  = "/identity/account/manage",
                ["userOptions:roleClaim"]                 = "role",
                ["providerOptions:authority"]             = "https://theidserver-duende.herokuapp.com",
                ["providerOptions:clientId"]              = "theidserveradmin",
                ["providerOptions:defaultScopes"]         = @" [
      ""openid"",
      ""profile"",
      ""theidserveradminapi""
    ]",
                ["providerOptions:postLogoutRedirectUri"] = "https://theidserver-duende.herokuapp.com/authentication/logout-callback",
                ["providerOptions:postLogoutRedirectUri"] = "https://theidserver-duende.herokuapp.com/authentication/login-callback",
                ["providerOptions:responseType"]          = "code",
                ["welcomeContenUrl"]         = "https://theidserver-duende.herokuapp.com/api/welcomefragment",
                ["settingsOptions:typeName"] = "Aguacongas.TheIdServer.BlazorApp.Models.ServerConfig, Aguacongas.TheIdServer.BlazorApp.Infrastructure",
                ["settingsOptions:apiUrl"]   = "https://theidserver-duende.herokuapp.com/api/api/configuration",
                ["menuOptions:showSettings"] = "true"
            });

            var settings = configuration.Get <Settings>();

            var services = builder.Services.AddBlazorWebView();

            WebAssemblyHostBuilderExtensions.ConfigureServices(services, configuration, settings);


            return(builder.Build());
        }
        public void AppConfigurationReachesBuilder()
        {
            var builder = MauiApp.CreateBuilder();

            builder.Host
            .ConfigureAppConfiguration((_, builder) =>
            {
                builder.AddInMemoryCollection(new Dictionary <string, string>
                {
                    { "key 1", "value 1" },
                });
            });

            var appConfigValue = builder.Configuration["key 1"];
            var mauiApp        = builder.Build();

            Assert.Equal("value 1", appConfigValue);
        }
        public void ConfigureAppConfigurationConfiguresValues()
        {
            var builder = MauiApp.CreateBuilder();

            builder.Host
            .ConfigureAppConfiguration((_, builder) =>
            {
                builder.AddInMemoryCollection(new Dictionary <string, string>
                {
                    { "key 1", "value 1" },
                });
            });
            var mauiApp = builder.Build();

            var configuration = mauiApp.Services.GetRequiredService <IConfiguration>();

            Assert.Equal("value 1", configuration["key 1"]);
        }
示例#10
0
        public void ConfigureFontsRegistersTheCorrectServices()
        {
            var builder = MauiApp
                          .CreateBuilder()
                          .ConfigureFonts();
            var mauiApp = builder.Build();

            var manager = mauiApp.Services.GetRequiredService <IFontManager>();

            Assert.NotNull(manager);

            var registrar = mauiApp.Services.GetRequiredService <IFontRegistrar>();

            Assert.NotNull(registrar);

            var loader = mauiApp.Services.GetRequiredService <IEmbeddedFontLoader>();

            Assert.NotNull(loader);
        }
示例#11
0
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();

            builder
            .UseMauiApp <App>()
            .ConfigureEssentials(essentials =>
            {
                essentials.UseVersionTracking();
#if WINDOWS
                essentials.UseMapServiceToken("RJHqIE53Onrqons5CNOx~FrDr3XhjDTyEXEjng-CRoA~Aj69MhNManYUKxo6QcwZ0wmXBtyva0zwuHB04rFYAPf7qqGJ5cHb03RCDw1jIW8l");
#endif
                essentials.AddAppAction("app_info", "App Info", icon: "app_info_action_icon");
                essentials.AddAppAction("battery_info", "Battery Info");
                essentials.OnAppAction(App.HandleAppActions);
            });

            return(builder.Build());
        }
示例#12
0
        public void GetServiceCanReturnEnumerableParams()
        {
            var builder = MauiApp.CreateBuilder();

            builder.Services.AddTransient <IFooService, FooService>();
            builder.Services.AddTransient <IFooService, FooService2>();
            builder.Services.AddTransient <IFooBarService, FooEnumerableService>();
            var mauiApp = builder.Build();

            var service = mauiApp.Services.GetService <IFooBarService>();
            var foobar  = Assert.IsType <FooEnumerableService>(service);

            var serviceTypes = foobar.Foos
                               .Select(s => s.GetType().FullName)
                               .ToArray();

            Assert.Contains(typeof(FooService).FullName, serviceTypes);
            Assert.Contains(typeof(FooService2).FullName, serviceTypes);
        }
示例#13
0
        public void CanAddLoggingProviders()
        {
            var loggerProvider = new MyLoggerProvider();

            var builder = MauiApp.CreateBuilder();

            builder
            .Logging
            .Services
            .AddSingleton <ILoggerProvider>(loggerProvider);

            var mauiApp = builder.Build();

            ILogger logger = mauiApp.Services.GetService <ILogger <HostBuilderLoggingTests> >();

            logger.LogError("An error");
            Assert.Single(loggerProvider.Messages);
            Assert.Equal("An error", loggerProvider.Messages[0]);
        }
示例#14
0
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();

        builder
        .UseMauiApp <App>()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
        });

        builder.Services.AddMauiBlazorWebView();
#if DEBUG
        builder.Services.AddBlazorWebViewDeveloperTools();
#endif

        builder.Services.AddSingleton <WeatherForecastService>();

        return(builder.Build());
    }
示例#15
0
        public static MauiApp CreateMauiApp()
        {
            var appBuilder = MauiApp.CreateBuilder();

            appBuilder
            .ConfigureTests(new TestOptions
            {
                Assemblies =
                {
                    typeof(MauiProgram).Assembly
                },
            })
            .UseHeadlessRunner(new HeadlessRunnerOptions
            {
                RequiresUIContext = true,
            })
            .UseVisualRunner();

            return(appBuilder.Build());
        }
示例#16
0
        public void AddingMemoryStreamBackedConfigurationWorks()
        {
            var builder = MauiApp.CreateBuilder();

            var jsonConfig = @"{ ""foo"": ""bar"" }";

            using var ms = new MemoryStream();
            using var sw = new StreamWriter(ms);
            sw.WriteLine(jsonConfig);
            sw.Flush();

            ms.Position = 0;
            builder.Configuration.AddJsonStream(ms);

            Assert.AreEqual("bar", builder.Configuration["foo"]);

            using var app = builder.Build();

            Assert.AreEqual("bar", app.Configuration["foo"]);
        }
示例#17
0
        public void DelegateEventsFireExactlyOnce()
        {
            var eventFired = 0;
            var newValue   = 0;

            var mauiApp = MauiApp.CreateBuilder()
                          .ConfigureLifecycleEvents(builder => builder.AddEvent <CustomDelegate>("TestEvent", param => param + 1))
                          .Build();

            var service = mauiApp.Services.GetRequiredService <ILifecycleEventService>();

            service.InvokeEvents <CustomDelegate>("TestEvent", del =>
            {
                eventFired++;
                newValue = del(10);
            });

            Assert.Equal(1, eventFired);
            Assert.Equal(11, newValue);
        }
示例#18
0
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();

        builder
        .UseMauiApp <App>()
        .ConfigureEssentials()
        .ConfigureCoreServices()
        .ConfigureServices()
        .ConfigurePages()
        .ConfigureViewModels()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("SpaceMono-Bold.ttf", "SpaceMonoBold");
            fonts.AddFont("SpaceMono-Italic.ttf", "SpaceMonoItalic");
            fonts.AddFont("SpaceMono-Regular.ttf", "SpaceMonoRegular");
        });

        return(builder.Build());
    }
示例#19
0
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();

        builder
        .UseMauiApp <App>()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
        });

//-:cnd:noEmit
#if DEBUG
        builder.Logging.AddDebug();
#endif
//+:cnd:noEmit

        return(builder.Build());
    }
示例#20
0
        public void CanAddMultipleEventsViaBuilder()
        {
            var event1Fired = 0;
            var event2Fired = 0;

            var mauiApp = MauiApp.CreateBuilder()
                          .ConfigureLifecycleEvents(builder =>
            {
                builder.AddEvent("TestEvent", () => event1Fired++);
                builder.AddEvent("TestEvent", () => event2Fired++);
            })
                          .Build();

            var service = mauiApp.Services.GetRequiredService <ILifecycleEventService>();

            service.InvokeEvents("TestEvent");

            Assert.Equal(1, event1Fired);
            Assert.Equal(1, event2Fired);
        }
示例#21
0
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();

        builder
        .UseMauiApp <App>()
        .UseMauiCommunityToolkitMarkup()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
            fonts.AddFont("Font Awesome 6 Free-Regular-400.otf", "FontAwesome");
        });

        builder.Services.AddSingleton <MainViewModel>();

        builder.Services.AddSingleton <MainPage>();

        return(builder.Build());
    }
示例#22
0
        public void WillRetrieveEnumerables()
        {
            var builder = MauiApp.CreateBuilder();

            builder.Services.AddTransient <IFooService, FooService>();
            builder.Services.AddTransient <IFooService, FooService2>();
            var mauiApp = builder.Build();

            var fooServices = mauiApp.Services
                              .GetServices <IFooService>()
                              .ToArray();

            Assert.Equal(2, fooServices.Length);

            var serviceTypes = fooServices
                               .Select(s => s.GetType().FullName)
                               .ToArray();

            Assert.Contains(typeof(FooService).FullName, serviceTypes);
            Assert.Contains(typeof(FooService2).FullName, serviceTypes);
        }
示例#23
0
        public void MauiAppCanObserveSourcesClearedInInnerBuild()
        {
            using var listener = new HostingListener(hostBuilder =>
            {
                hostBuilder.ConfigureHostConfiguration(config =>
                {
                    // Clearing here would not remove the app config added via builder.Configuration.
                    config.AddInMemoryCollection(new Dictionary <string, string>()
                    {
                        { "A", "A" },
                    });
                });

                hostBuilder.ConfigureAppConfiguration(config =>
                {
                    // This clears both the chained host configuration and chained builder.Configuration.
                    config.Sources.Clear();
                    config.AddInMemoryCollection(new Dictionary <string, string>()
                    {
                        { "B", "B" },
                    });
                });
            });

            var builder = MauiApp.CreateBuilder();

            builder.Configuration.AddInMemoryCollection(new Dictionary <string, string>()
            {
                { "C", "C" },
            });

            using var app = builder.Build();

            Assert.True(string.IsNullOrEmpty(app.Configuration["A"]));
            Assert.True(string.IsNullOrEmpty(app.Configuration["C"]));

            Assert.AreEqual("B", app.Configuration["B"]);

            Assert.AreSame(builder.Configuration, app.Configuration);
        }
示例#24
0
        public static MauiApp CreateMauiApp()
        {
            BitExceptionHandlerBase.Current = new SampleExceptionHandler();

            Simple.OData.Client.V4Adapter.Reference();

            AssemblyContainer.Current.Init();

            var builder = MauiApp.CreateBuilder();

            builder.Host.UseServiceProviderFactory(new BitServiceProviderFactory(ConfigureServicesImpl));

            builder
            .RegisterBlazorMauiWebView()
            .UseMauiApp <App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

            return(builder.Build());
        }
示例#25
0
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();

        builder
        .RegisterBlazorMauiWebView()
        .UseMauiApp <App>()
        .ConfigureEssentials()
        .ConfigureServices()
        .ConfigureViewModels()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("Segoe-Ui-Bold.ttf", "SegoeUiBold");
            fonts.AddFont("Segoe-Ui-Regular.ttf", "SegoeUiRegular");
            fonts.AddFont("Segoe-Ui-Semibold.ttf", "SegoeUiSemibold");
            fonts.AddFont("Segoe-Ui-Semilight.ttf", "SegoeUiSemilight");
        });

        Barrel.ApplicationId = "dotnetpodcasts";

        return(builder.Build());
    }
示例#26
0
文件: Startup.cs 项目: hevey/maui
        public static MauiApp CreateMauiApp()
        {
            var appBuilder = MauiApp.CreateBuilder();

#if WINDOWS
            Microsoft.Maui.Essentials.Platform.MapServiceToken =
                "RJHqIE53Onrqons5CNOx~FrDr3XhjDTyEXEjng-CRoA~Aj69MhNManYUKxo6QcwZ0wmXBtyva0zwuHB04rFYAPf7qqGJ5cHb03RCDw1jIW8l";
#endif

            appBuilder
            .ConfigureLifecycleEvents(lifecycle =>
            {
#if __IOS__
                lifecycle
                .AddiOS(iOS => iOS
                        .OpenUrl((app, url, options) =>
                                 Microsoft.Maui.Essentials.Platform.OpenUrl(app, url, options))
                        .ContinueUserActivity((application, userActivity, completionHandler) =>
                                              Microsoft.Maui.Essentials.Platform.ContinueUserActivity(application, userActivity, completionHandler))
                        .PerformActionForShortcutItem((application, shortcutItem, completionHandler) =>
                                                      Microsoft.Maui.Essentials.Platform.PerformActionForShortcutItem(application, shortcutItem, completionHandler)));
#elif WINDOWS
                lifecycle
                .AddWindows(windows =>
                {
                    windows
                    .OnLaunched((app, e) =>
                                Microsoft.Maui.Essentials.Platform.OnLaunched(e));
                    windows
                    .OnActivated((window, e) =>
                                 Microsoft.Maui.Essentials.Platform.OnActivated(window, e));
                });
#endif
            })
            .UseMauiApp <App>();

            return(appBuilder.Build());
        }
示例#27
0
        public static MauiApp CreateMauiApp()
        {
            var appBuilder = MauiApp.CreateBuilder();

            appBuilder
            .ConfigureLifecycleEvents(life =>
            {
#if ANDROID
                life.AddAndroid(android =>
                {
                    android.OnCreate((a, b) => DefaultContext = a);
                });
#elif WINDOWS
                life.AddWindows(windows =>
                {
                    windows.OnWindowCreated((w) => DefaultWindow = w);
                });
#endif
            })
            .ConfigureTests(new TestOptions
            {
                Assemblies =
                {
                    typeof(MauiProgram).Assembly
                },
            })
            .UseHeadlessRunner(new HeadlessRunnerOptions
            {
                RequiresUIContext = true,
            })
            .UseVisualRunner();

            var mauiApp = appBuilder.Build();

            DefaultTestApp = mauiApp.Services.GetRequiredService <IApplication>();

            return(mauiApp);
        }
示例#28
0
文件: Startup.cs 项目: hevey/maui
        public static MauiApp CreateMauiApp()
        {
            var appBuilder = MauiApp.CreateBuilder();

            appBuilder
            .ConfigureLifecycleEvents(life =>
            {
#if __ANDROID__
                life.AddAndroid(android =>
                {
                    android.OnCreate((activity, bundle) =>
                                     Platform.Init(activity, bundle));
                    android.OnRequestPermissionsResult((activity, requestCode, permissions, grantResults) =>
                                                       Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults));
                });
#endif
            })
            .ConfigureTests(new TestOptions
            {
                Assemblies =
                {
                    typeof(MauiProgram).Assembly
                },
                SkipCategories = Traits
                                 .GetSkipTraits()
#if __ANDROID__
                                 .Append($"{Traits.FileProvider}={Traits.FeatureSupport.ToExclude(Platform.HasApiLevel(24))}")
#endif
                                 .ToList(),
            })
            .UseHeadlessRunner(new HeadlessRunnerOptions
            {
                RequiresUIContext = true,
            })
            .UseVisualRunner();

            return(appBuilder.Build());
        }
示例#29
0
        public void CanRetrieveFontUsingConcreteImageSource()
        {
            var builder = MauiApp
                          .CreateBuilder()
                          .ConfigureFonts()
                          .ConfigureImageSources();
            var mauiApp = builder.Build();

            var manager = mauiApp.Services.GetRequiredService <IFontManager>();

            Assert.NotNull(manager);

            var images = mauiApp.Services.GetRequiredService <IImageSourceServiceProvider>();

            Assert.NotNull(images);

            var imageSourceService = images.GetRequiredImageSourceService <FontImageSourceStub>();

            Assert.NotNull(imageSourceService);
            var fontService = Assert.IsType <FontImageSourceService>(imageSourceService);

            Assert.Equal(manager, fontService.FontManager);
        }
示例#30
0
        public void EnsureHandlerCreated(Action <MauiAppBuilder> additionalCreationActions = null)
        {
            if (_isCreated)
            {
                return;
            }

            _isCreated = true;
            var appBuilder = MauiApp
                             .CreateBuilder()
                             .ConfigureMauiHandlers(handlers =>
            {
                //handlers.AddHandler(typeof(Editor), typeof(EditorHandler));
                //handlers.AddHandler(typeof(Editor), typeof(EditorHandler));
                //handlers.AddHandler(typeof(VerticalStackLayout), typeof(LayoutHandler));
            });

            additionalCreationActions?.Invoke(appBuilder);

            _mauiApp = appBuilder.Build();

            _mauiContext = new ContextStub(_mauiApp.Services);
        }