为了在flatter中创建响应迅速的应用程序,我使用size\u配置。dart
文件,用于处理不同屏幕中代码的响应。我注入sizeConfigures()。init(上下文)
MyApp
根小部件下方的code>使应用程序响应。init方法在上下文中缩放宽度、高度和字体大小。我还创建了一些函数,这样我就可以把从Figma设计中得到的字体的精确值,而不是像Sizer软件包中那样的百分比。
getFont()、getHeight()、getWidth()函数接受双倍大小,并根据屏幕为文本创建响应大小。
size\u配置。省道
import 'package:flutter/material.dart';
class SizeConfigs {
static MediaQueryData _mediaQueryData;
static double screenWidth;
static double screenHeight;
static double defaultSize;
static Orientation orientation;
void init(BuildContext context) {
_mediaQueryData = MediaQuery.of(context);
screenWidth = _mediaQueryData.size.width;
screenHeight = _mediaQueryData.size.height;
orientation = _mediaQueryData.orientation;
// On iPhone 11 the defaultSize = 10 almost
// So if the screen size increase or decrease then our defaultSize also vary
defaultSize = orientation == Orientation.landscape
? screenHeight * 0.024
: screenWidth * 0.024;
}
}
double getFont(double size) {
double defaultsSize = SizeConfigs.defaultSize * size;
return (defaultsSize / 10);
}
// Get the proportionate height as per screen size
double getHeight(double inputHeight) {
double screenHeight = SizeConfigs.screenHeight;
// 812 is the layout height that designer use
return (inputHeight / 812.0) * screenHeight;
}
// Get the proportionate width as per screen size
double getWidth(double inputWidth) {
double screenWidth = SizeConfigs.screenWidth;
// 375 is the layout width that Figma provides
return (inputWidth / 375.0) * screenWidth;
}
我还有一个app\u主题。dart
文件,用于存储我在应用程序中使用的主题数据。
app\u主题。省道
class AppTheme {
//Light Theme Colors
static Color lightBackgroundColor = const Color(0xffFFFFFF);
static Color lightPrimaryColor = const Color(0xffF5E8EA);
static Color lightSecondaryColor = const Color(0xff192533);
static Color iconColor = const Color(0xffEEF0EB);
///Light Theme configuration
static final lightTheme = ThemeData(
textTheme: lightTextTheme,
brightness: Brightness.light,
backgroundColor: lightBackgroundColor,
primaryColorLight: lightPrimaryColor,
accentColor: lightSecondaryColor,
selectedRowColor: tertiaryColor,
unselectedWidgetColor: iconColor,
toggleButtonsTheme:
ToggleButtonsThemeData(color: tertiaryColor, disabledColor: iconColor),
//buttonTheme: ButtonThemeData(buttonColor: tertiaryColor),
toggleableActiveColor: tertiaryColor,
visualDensity: VisualDensity.adaptivePlatformDensity,
);
///Light TextTheme configuration
static final TextTheme lightTextTheme = TextTheme(
headline4: _mainTitle,
headline5: _title,
subtitle1: _subtitle,
bodyText1: _body,
bodyText2: _detail,
);
/// Main Title
static final TextStyle _mainTitle = TextStyle(
fontFamily: "RedHatDisplay-Black",
fontSize: 36,
);
/// Title
static final TextStyle _title = TextStyle(
fontFamily: "RedHatDisplay-Bold",
fontSize: 28,
);
/// Subtitle
static final TextStyle _subtitle = TextStyle(
fontFamily: "RedHatDisplay-Medium",
fontSize: 18,
);
/// Body
static final TextStyle _body = TextStyle(
fontFamily: "RedHatDisplay-Regular",
fontSize: 16,
);
/// Detail
static final TextStyle _detail = TextStyle(
fontFamily: "RedHatDisplay-Regular",
fontSize: 14,
);
}
问题就在这里。ThemeData没有BuildContext,因此MediaQuery在其中不起作用,因此我无法在TextStyle
的fontSize
参数中调用我的getFont()
函数。
我要做的是使用copyWith
方法,并用函数重写fontSize属性。
Text(
'HomeScreen',
style: Theme.of(context).textTheme.headline4.copyWith(fontSize: getFont(18)),
),
我只想使用主题。关于(上下文)。headline4
无论我在哪里需要它们,它的字体都应该起到响应的作用,TextStyle应该能够使用我的getFont()
函数。
static final TextStyle _mainTitle = TextStyle(
fontFamily: "RedHatDisplay-Black",
//This should take in the getFont function from the SizeConfigs.
fontSize: getFont(36),
);
TL;DR-我想要一种方法,将使用BuildContext的MediQuery数据(SizeConfigs)传递给没有BuildContext的主题数据。
我对flutter还是新手,我一直试图在条形图中显示http请求中的一些数据。我找不到任何例子。我希望你们中的一些人能帮忙:) 我想使用网上画廊的这张图表。我只是为我的应用程序更改了类的名称: 现在我想把这两者结合起来。 数据是这样的: [{“时间戳”:“2018-06-29 14:39:18”,“RPM”:0,“RPM_Filter”:0,“accel”:0,“temp1”:104,“temp2
我想用di。在《颤栗》中,我加上这个https://pub.dartlang.org/packages/di打包我的项目,我开始读这篇文章https://webdev.dartlang.org/angular/guide/dependency-injection文章,但我不完全理解。 所以没关系:在服务类(例如:MyServices)上使用@Injectable()注释,但是如何注入其他类呢?例如
正在启动lib\main。IA Emulator上AOSP上的dart处于调试模式。。。正在运行Gradle任务“assembleDebug”。。。警告:插件路径_provider_android需要android SDK版本31。警告:插件共享的_首选项_android需要android SDK版本31。一个或多个插件需要更高的Android SDK版本。通过将以下内容添加到D:\App Dev
在我的flatter应用程序中,我正在使用firebase\u auth for google\u sign\u In,它运行良好。但是当我把cloud\u firestore添加到pubspec时。yaml然后获取依赖项,然后重新启动我的应用程序。它会显示以下错误:
在调试模式下启动SM A105F上的lib\main.dart...正在运行分级任务“组装调试”...√build build\app\outputs\flutter-apk\app-debug.apk。正在安装build\app\outputs\flutter-apk\app.apk...错误:ADB退出,退出代码为1执行流式安装