标签: flutter-theme

默认情况下,如何将 Flutter 应用主题设置为深色?

我在flutter中创建了一个简单的登录UI,但我不知道如何使应用程序的整体主题变得黑暗。我的意思是,将来,如果我向应用程序添加更多功能,它应该都在黑暗主题中。有没有办法做到这一点?

我使用了一个单独的 dart 文件 (login.dart),我的登录 UI 中使用的所有小部件都在这个文件中。我已在主 dart 文件 (main.dart) 中将 ThemeData 设置为深色,但该应用程序仍在以浅色主题运行。

这是我的代码:

main.dart

import 'package:flutter/material.dart';
import 'package:bidder_login/login.dart';

void main(){
    runApp(
        MaterialApp(
      theme: ThemeData(),
      darkTheme: ThemeData.dark(),
            debugShowCheckedModeBanner: false,
            title: "Basic Login Demo",
            home: LoginPage(),
        ),
    );
}
Run Code Online (Sandbox Code Playgroud)

登录.dart

import 'package:flutter/material.dart';

class LoginPage extends StatefulWidget {
    @override
    _LoginPageState createState() => _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {
    @override
    Widget build(BuildContext context) {
        return Scaffold(
            body: SafeArea(
                child: ListView(
                    padding: EdgeInsets.symmetric(horizontal: 24.0),
                    children: <Widget>[
                        SizedBox(height: 80.0),
                        // Column(
                        //  children: <Widget>[ …
Run Code Online (Sandbox Code Playgroud)

android dart flutter flutter-theme

6
推荐指数
1
解决办法
8374
查看次数

如何更改 Flutter 中子树的文本颜色?

我希望每个Text特定的内部Widget都有白色,尽管它们都可以有不同的大小。我知道我可以将每个单曲更改Text为白色,但我想让它变得智能并更改该特定的主题Widget

我试过这个:

DefaultTextStyle.merge(
  style: TextStyle(color: Colors.white),
  child: Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      Text('Text 1',
        style: Theme.of(context).textTheme.title,
      ),
      Text('Text 2')
    ],
  ),
),
Run Code Online (Sandbox Code Playgroud)

问题是Text 1变成黑色,Text 2变成我想要的白色。

我认为使用DefaultTextStyle.merge我仍然能够使用Theme.of(context)来获得一般TextTheme,仍然保持更改DefaultTextStyle,但显然我错了。

更改子树文本颜色同时能够访问原始文本的其余部分的正确方法是什么Theme

flutter flutter-theme

5
推荐指数
1
解决办法
1868
查看次数

Flutter 更改主题中的页面转换速度/持续时间

如何更改应用主题中设置的过渡的持续时间/速度?

我可以使用主题更改过渡动画MaterialApp。下面的示例用FadeTransition. 使用淡入淡出过渡时感觉很慢,我无法弄清楚如何更改主题中设置的过渡的持续时间。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

final themeData = ThemeData(
  pageTransitionsTheme: PageTransitionsTheme(builders: {
    TargetPlatform.iOS: FadeTransitionBuilder(),
    TargetPlatform.android: FadeTransitionBuilder(),
  }),
);

class FadeTransitionBuilder extends PageTransitionsBuilder {
  @override
  Widget buildTransitions<T>(_, __, animation, ___, child) => FadeTransition(opacity: animation, child: child);
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Mobile',
      theme: themeData,
      initialRoute: '/',
      routes: routes,
    );
  } …
Run Code Online (Sandbox Code Playgroud)

android ios flutter flutter-animation flutter-theme

5
推荐指数
2
解决办法
3918
查看次数

从静态区域获取ThemeData

我将文本样式保存在单独的text_styles.dart文件中。当我想使用像 Theme.of(context).primaryColor 这样的主题颜色时,我无法从 到达 ThemeData 对象。text_styles.dart我用这种解决方案解决了我的问题,但这不是一个好的解决方案。

TextStyle kWelcomePageHeaderTextStyle(BuildContext context) => TextStyle(
      fontFamily: "Courgette",
      fontSize: 30.0,
      color: Theme.of(context).primaryColor,
    );
Run Code Online (Sandbox Code Playgroud)

所以,我需要从静态区域获取 ThemeData 以便像这样使用我的文本样式。

const kWelcomePageHeaderTextStyle = TextStyle(
      fontFamily: "Courgette",
      fontSize: 30.0,
      color: [THEME_DATA_OBJECT_NEEDED].primaryColor,
    );
Run Code Online (Sandbox Code Playgroud)

我可以从 text_styles.dart 获取 ThemeData 对象还是有更好的解决方案?

flutter flutter-theme

5
推荐指数
1
解决办法
3338
查看次数

如何在颤振中填充复选框内部的颜色?

这是我在颤动中用于复选框的内容。但我只能为未选中状态设置边框颜色,而不能为复选框内的填充颜色找到方法。请在这件事上给予我帮助。

Theme(
    data: ThemeData(unselectedWidgetColor: Colors.white),
    child: Checkbox(
        checkColor: Colors.blue,
        activeColor: Colors.white,
        value: rememberMe,
        onChanged: (value) {
            setState(() {
                rememberMe = value;
            });
        },
    ),
)
Run Code Online (Sandbox Code Playgroud)

checkbox flutter flutter-layout flutter-theme

5
推荐指数
1
解决办法
6176
查看次数

Flutter - 在小部件中访问 ThemeData.primarySwatch

我有这个主题数据:

import 'package:flutter/material.dart';
import 'package:vepo/fonts.gen.dart';

import 'theme_utils.dart';

MaterialColor primarySwatch = generateMaterialColor(primaryColorMid);
MaterialColor lightGreenSwatch = generateMaterialColor(lightGreenColorMid);
MaterialColor accentSwatch = generateMaterialColor(accentColor);

const primaryColorMid = Color(0xFF379e97);
const lightGreenColorMid = Color(0xFF5ccc89);
const darkBackgroundColor = Color(0xff303030);
const accentColor = Color(0xff3F51B5);
const errorColor = Color(0xffb03e3e);

Color initialGradientColor = lightGreenSwatch[300];
Color endGradientColor = primarySwatch[900];
Color blueText = lightGreenSwatch[500];

ThemeData homeTheme = ThemeData(
  accentColor: primaryColorMid,
  primarySwatch: primarySwatch,
  colorScheme: ColorScheme(
      brightness: Brightness.light,
      primary: primarySwatch[500],
      secondary: accentSwatch[500],
      surface: Colors.white,
      background: primarySwatch,
      error: Colors.red[50],
      onBackground: Colors.white,
      onError: errorColor,
      onPrimary: Colors.white,
      onSecondary: …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-theme

5
推荐指数
1
解决办法
4138
查看次数

ColorScheme Flutter 中 Primary 和 onPrimary 属性有什么区别

在定义ThemeDataFlutter 应用程序时,我们可以定义colorScheme属性。该属性具有background& onBackgroundprimary& onPrimarysecondary&等内部属性onSecondary。此外,所有这些属性都设置为required

  static final ThemeData lightTheme = ThemeData(
    colorScheme: ColorScheme(
      background: appBackgroundColor,
      brightness: Brightness.light,
      error: Colors.white,
      onBackground: primaryColor,
      onError: null,
      onPrimary: null,
      onSecondary: null,
      onSurface: null,
      primary: null,
      secondary: secondaryColor,
      surface: null,
    ),
  );
Run Code Online (Sandbox Code Playgroud)

我尝试参考Flutter 的文档,但不太明白它们之间的区别。

flutter flutter-theme flutter2.0

5
推荐指数
2
解决办法
3714
查看次数

5
推荐指数
1
解决办法
1550
查看次数

高架按钮主题数据边框 - Flutter

如何通过 themedata 将 sideBorder 实现为levedButton。在此输入图像描述

 elevatedButtonTheme: ElevatedButtonThemeData(
    style: ButtonStyle(side: MaterialStateProperty<BorderSide>//Stuck here),
  ),
Run Code Online (Sandbox Code Playgroud)

flutter flutter-layout flutter-theme

4
推荐指数
1
解决办法
6610
查看次数

Flutter:如何在库比蒂诺主题中设置材质小部件的主题?

我有一个 Flutter 应用程序,它使用 Android 的 Material 主题和 iOS 的 Cupertino 主题。但我Card在两个主题中都使用了 widget,它是一个 Material widget。现在我有以下代码main.dart

Widget build(BuildContext context) => PlatformProvider(
      builder: (BuildContext context) => PlatformApp(
            cupertino: (_, __) => CupertinoAppData(
                theme: CupertinoThemeData(brightness: Brightness.light, ...)),
            material: (_, __) => MaterialAppData(
                theme: ThemeData(
                  brightness: Brightness.light,
                  primarySwatch: Colors.deepPurple,
                  cardTheme: CardTheme(
                    color: Colors.grey,
                    ...
                  )
                  ...
                ),),
......
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,该小部件在 Material 中Card使用了主题,但在 中没有相应的主题。所以在 iOS 上,s 只使用他们的默认主题。cardThemeThemeDatacardThemeCupertinoThemeDataCard

那么如何像Card库比蒂诺主题那样为 Material 小部件设置主题呢?

flutter flutter-cupertino flutter-theme

4
推荐指数
1
解决办法
1983
查看次数