当前位置:首页 > 移动端开发 > 正文内容

Flutter 底部(手势条)和顶部导航栏沉溺适配多主题

邻居的猫1个月前 (12-09)移动端开发1850

适配原理

顶部导航栏和状态栏沉溺完成比较简单,设置Scaffold的AppBar布景色即可,其间surfaceTintColor能够设置IOS滑动之后状态栏色彩,不想要显现顶部导航栏高度设置toolbarHeight:0,暗影设置elevation: 0

@override
Widget build(BuildContext context) {
  var bg = Theme.of(context).colorScheme.surface;
  return Scaffold(
    appBar: AppBar(
      elevation: 0,
      toolbarHeight: 0,
      backgroundColor: bg,
      surfaceTintColor: bg,
    ),
    backgroundColor: bg,
  )
}

底部导航栏即手势条,也叫小白条。IOS不需求特别适配,设置colorSchemesurface布景即可。

ThemeData lightMode = ThemeData(
  useMaterial3: true,
  colorScheme: const ColorScheme.light(
    surface: Color.fromARGB(255, 242, 247, 251),
  ),
);

适配代码

Android底部手势条需求特别适配,下面的代码相同适用于IOS

亮色主题

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

ThemeData lightMode = ThemeData(
  useMaterial3: true,
  // 沉溺的要害代码
  appBarTheme: const AppBarTheme(
    systemOverlayStyle: SystemUiOverlayStyle(
      statusBarColor: Colors.transparent, // 去除状态栏遮罩
      statusBarIconBrightness: Brightness.dark, // 状态栏图标字体色彩
      systemNavigationBarColor: Color.fromARGB(255, 242, 247, 251), // 底部导航栏色彩
    )
  ),
  colorScheme: const ColorScheme.light(
    surface: Color.fromARGB(255, 242, 247, 251), // 和底部导航栏保持一致
    surfaceBright: Color(0x00FFFFFF), // 通明布景
    primary: Color.fromARGB(255, 89, 54, 133),
    secondary: Color(0xFFE3EDF2),
    tertiary: Colors.black,
    onSecondary: Colors.black,
    secondaryContainer: Color(0xFFE3EDF2), // 骨架屏底色
    onSecondaryContainer: Color.fromARGB(255, 242, 247, 251), // 骨架屏亮色
    inversePrimary: Colors.black54,
  ),
);

暗色主题

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

ThemeData darkMode = ThemeData(
  useMaterial3: true,
  // 沉溺的要害代码
  appBarTheme: const AppBarTheme(
    systemOverlayStyle: SystemUiOverlayStyle(
      statusBarColor: Colors.transparent,
      statusBarIconBrightness: Brightness.light,
      systemNavigationBarColor: Color(0xFF121012),  // 和主布景surface保持一致
    )
  ),
  colorScheme: const ColorScheme.dark(
    surface: Color(0xFF121012), 
    surfaceBright: Color(0x00000000), // 通明布景
    primary: Color.fromARGB(255, 89, 54, 133),
    secondary: Color(0xFF382C3E),
    tertiary: Colors.white,
    onSecondary: Colors.white30, // 骨架屏底色
    secondaryContainer: Color.fromARGB(255, 12, 11, 12), // 骨架屏亮色
    onSecondaryContainer: Colors.black26,
    inversePrimary: Colors.white54,
  ),
);

运用Provider

你需求装置 provider

flutter pub add provider

动态切换代码

import 'package:flutter/material.dart';
import 'package:video_app/theme/dark_theme.dart';
import 'package:video_app/theme/light_theme.dart';

class ThemeProvider extends ChangeNotifier {
  ThemeData _themeData = lightMode;

  ThemeData get themeData => _themeData;

  ThemeData get darkTheme => darkMode;
  ThemeData get lightTheme => lightMode;

  set themeData(ThemeData themeData) {
    _themeData = themeData;
    notifyListeners();
  }

  void toggleTheme() {
    if (_themeData == lightMode) {
      themeData = darkMode;
    } else {
      themeData = lightMode;
    }
  }
}

主题设置

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ScreenUtilInit(
      designSize: designSize,
      builder: (context, child) {
        return MaterialApp(
          theme: Provider.of<ThemeProvider>(context).themeData, // 动态主题
          darkTheme: Provider.of<ThemeProvider>(context).darkTheme, // 暗色主题,设置后不能手动切换
          home: const RootScreen(),
          debugShowCheckedModeBanner: false,
        );
      },
    );
  }
}

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=491

分享给朋友:

“Flutter 底部(手势条)和顶部导航栏沉溺适配多主题” 的相关文章

手机如何退出开发者模式,全面指南

1. 华为手机: 打开“设置”应用。 进入“系统”或“系统管理”。 选择“开发人员选项”。 关闭“开发者选项”或“USB调试”等选项。2. 小米手机: 打开“设置”应用。 进入“更多设置”或“我的设备”。 选择“开发者选项”。 关闭“开发者选项”或“U...

手机浏览器开发者工具, 手机浏览器开发者工具概述

手机浏览器开发者工具, 手机浏览器开发者工具概述

手机浏览器开发者工具是移动端网页开发和调试的重要工具。以下是几种常用的手机浏览器开发者工具及其使用方法:1. Chrome DevTools: 功能:支持模拟设备、远程调试Android和iOS页面等。 使用方法: 在PC端Chrome浏览器中打开“开发者工具”(按F12键)。...

鸿蒙殿,探索鸿蒙世界的神秘之门

鸿蒙殿,探索鸿蒙世界的神秘之门

鸿蒙殿(HarmonyOS)是华为公司自研的操作系统,面向全场n2. 系统特性: 全场n 微内核设计:基于微内核的架构,提高了系统的安全性和可靠性。 多设备支持:适配手机、平板、电视、智能汽车、可穿戴设备等多种终端设备。3. 发展历程: 2019年8月:HarmonyOS...

鸿蒙之气,鸿蒙之气的奥秘与传承

鸿蒙之气,通常指的是鸿蒙系统的概念或象征。鸿蒙系统是华为推出的一款操作系统,旨在为用户提供一个全场景智能化的操作系统。鸿蒙系统的主要特点包括分布式技术、微内核架构、以及跨设备的无缝体验。这些特点使得鸿蒙系统能够在不同的设备上运行,包括手机、平板、智能手表、智能家居设备等,为用户带来更加便捷和智能的使...

鸿蒙道尊 小说,逆天修行的奇幻之旅

鸿蒙道尊 小说,逆天修行的奇幻之旅

《鸿蒙道尊》是一部玄幻类网络小说,目前有两个不同的版本,分别由不同的作者创作。1. 唯易永恒版: 简介:该版本讲述了高中生陆长生表白受挫惨死,因一块棺材玉坠死而复生,并得无上神能,踏上逆天修行之旅,誓以己力改变命运,改写世界。这部小说全文约188万字,已完结。2. 九支书竹版: 简介:该...

鸿蒙系统合作伙伴,鸿蒙系统合作伙伴生态蓬勃发展,共筑智能未来

鸿蒙系统合作伙伴,鸿蒙系统合作伙伴生态蓬勃发展,共筑智能未来

鸿蒙系统(HarmonyOS)自发布以来,吸引了众多合作伙伴的加入,共同构建了一个庞大的生态系统。以下是关于鸿蒙系统合作伙伴的一些详细信息: 合作伙伴类型鸿蒙系统的合作伙伴主要分为三类:1. 华为官方公布的“鸿蒙OS”合作伙伴:这类合作伙伴包括36家公司,名单来源于2021年5月18日的Harmon...