E/flutter(11441):#2_QuranShowState._ShowTaFseer..(封装:Alqranalkareem/Module/Quran/Show.Dart:881:32)
E/Flutter(11441):#3_SliderState._HandleChanged(包:Flutter/SRC/Material/Slider.Dart:453:14)
E/flutter(11441):#4_renderslider._startinteraction(包:flutter/src/material/slider.dart:982:7)
E/flutter(11441):#7GestureRecognizer.InvokeCallback(包:flutter/src/gestures/recognizer.dart:182:24)
E/flutter(11441):#8tapgesturerecognizer.handletapdown(包:flutter/src/gestures/tap.dart:463:11)
E/flutter(11441):#9 baseTapGestureRecognizer._checkdown(包:flutter/src/gestures/tap.dart:256:5)
E/flutter(11441):#10BaseTapGestureRecognizer.DidexceedDeadline(包:flutter/src/gestures/tap.dart:227:5)
E/flutter(11441):#11
PrimaryPointerGestureRecognizer.DidexceedDeadlineWithEvent(包:flutter/src/gestures/recognizer.dart:496:5)
E/flutter(11441):#12
PrimaryPointerGestureRecognizer.AddAllowedPointer。(包:Flutter/SRC/Gestures/Recognizer.Dart:449:40)
E/flutter(11441):#13_rootrun(dart:async/zone.dart:1122:38)
E/flutter(11441):#14_CustomZone.Run(Dart:Async/Zone.Dart:1023:19)
E/flutter(11441):#15_CustomZone.RunGuarded(Dart:Async/Zone.Dart:925:7)
E/flutter(11441):#18_CustomZone.Run(Dart:Async/Zone.Dart:1023:19)
E/flutter(11441):#19_CustomZone.bindCallback。(Dart:Async/Zone.Dart:949:23)
E/flutter(11441):#20 timer._createTimer。(DART:Async-patch/timer_patch.DART:23:15)
设置帮助器
import 'dart:convert';
import 'dart:ui';
import 'package:quiver/strings.dart';
import 'package:shared_preferences/shared_preferences.dart';
class SettingsHelpers {
static SettingsHelpers _instance;
static SettingsHelpers get instance {
if (_instance == null) {
_instance = SettingsHelpers();
}
return _instance;
}
SharedPreferences prefs;
Future fontSizeArabic(double fontSize) async {
await prefs.setString('fontSizeArabic', fontSize.toString());
}
static const double minFontSizeArabic = 22;
double get getFontSizeArabic {
String fontSizeString = prefs.getString('fontSizeArabic');
return double.tryParse(fontSizeString ?? minFontSizeArabic.toString());
}
Future setLocale(Locale locale) async {
var map = {
'languageCode': locale.languageCode,
};
var json = jsonEncode(map);
await prefs.setString('locale', json);
}
Locale getLocale() {
var json = prefs.getString('locale');
if (isBlank(json)) {
return Locale('en');
}
var mapJson = jsonDecode(json);
var locale = Locale(mapJson["languageCode"]);
return locale;
}
Future init() async {
prefs = await SharedPreferences.getInstance();
}
}
ShowTaFseer(_S)
Widget _showTafseer(int pageNum) {
TafseerRepository tafseerRepository = new TafseerRepository();
return FutureBuilder<List<Ayat>>(
future: tafseerRepository.getPageTafseer(pageNum),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
List<Ayat> ayat = snapshot.data;
return Padding(
padding: EdgeInsets.symmetric(horizontal: 16.0),
child: Column(
children: <Widget>[
Container(
color: Theme.of(context).primaryColorLight,
child: Row(
children: <Widget>[
Slider(
min: SettingsHelpers.minFontSizeArabic,
max: maxFontSizeArabic,
value: fontSizeArabic,
activeColor: Theme.of(context).hoverColor,
inactiveColor: Theme.of(context).primaryColorDark,
onChanged: (double value) async {
await SettingsHelpers.instance
.fontSizeArabic(value);
setState(
() {
fontSizeArabic = value;
},
);
_myEventBus.eventBus.fire(
FontSizeEvent()
..arabicFontSize = value
);
},
),
Container(
decoration: BoxDecoration(
color: Theme.of(context).hoverColor,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(5.0),
topRight: Radius.circular(5.0),
bottomLeft: Radius.circular(5.0),
bottomRight: Radius.circular(5.0),
)
),
alignment: Alignment.center,
child: Padding(
padding: const EdgeInsets.all(4.0),
child: Text('${fontSizeArabic.toInt()}',
style: TextStyle(
fontSize: 20,
color: Theme.of(context).primaryColorLight)),
),
),
],
),
),
Container(
// width: 300.0,
height: 500.0,
child: ListView.builder(
itemCount: ayat.length,
itemBuilder: (context, position) {
Ayat aya = ayat[position];
List<String> tafseer = aya.tafsser.split("))");
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Container(
decoration: BoxDecoration(
color: Theme.of(context).backgroundColor,
borderRadius: BorderRadius.only(
topRight: Radius.circular(8.0),
topLeft: Radius.circular(8.0)
)
),
child: Padding(
padding: const EdgeInsets.all(4.0),
child: Text(
"﴿${tafseer.first}﴾",
textAlign: TextAlign.center,
style: TextStyle(
fontFamily: "Uthmanic",
fontWeight: FontWeight.w500,
fontSize: fontSizeArabic
),
),
),
),
Padding(
padding: const EdgeInsets.only(top: 16.0, bottom: 8.0),
child: Text(
"${tafseer.last.trim()}",
textAlign: TextAlign.justify,
style: TextStyle(
color: Theme.of(context).hoverColor,
fontFamily: 'naskh',
fontWeight: FontWeight.w100,
fontSize: fontSizeArabic
),
),
),
Divider()
],
);
}),
),
],
),
);
} else {
return Center(
child: CircularProgressIndicator(),
);
}
},
);
}
我认为问题是prefs
没有正确初始化。请尝试使您的初始化变得更简单,如下所示
我使用了工厂设计模式。请参阅本文了解更多信息。
注意,我使用了一个简单的浮动按钮来触发动作,而不是滑块
class SettingsHelpers {
SharedPreferences prefs;
static final SettingsHelpers _instance = SettingsHelpers._internal();
SettingsHelpers._internal(){
_init();
}
factory SettingsHelpers() => _instance;
void _init() async {
prefs = await SharedPreferences.getInstance();
}
void fontSizeArabic(double fontSize) async {
prefs.setString('fontSizeArabic', fontSize.toString());
}
static const double minFontSizeArabic = 22;
double get getFontSizeArabic {
String fontSizeString = prefs.getString('fontSizeArabic');
return double.tryParse(fontSizeString ?? minFontSizeArabic.toString());
}
Future setLocale(Locale locale) async {
var map = {
'languageCode': locale.languageCode,
};
var json = jsonEncode(map);
await prefs.setString('locale', json);
}
Locale getLocale() {
var json = prefs.getString('locale');
if (isBlank(json)) {
return Locale('en');
}
var mapJson = jsonDecode(json);
var locale = Locale(mapJson["languageCode"]);
return locale;
}
}
class SampleTest extends StatefulWidget {
@override
_SampleTestState createState() => _SampleTestState();
}
class _SampleTestState extends State<SampleTest> {
double fontSizeArabic;
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton:
FloatingActionButton(child: Icon(Icons.add), onPressed: _onPressed),
);
}
void _onPressed() async {
double value = 18.0;
SettingsHelpers().fontSizeArabic(value);
}
}
我需要检测字体缩放后文本组件的字体大小。假设我有一个字体大小为18px的文本组件 用户通过操作系统辅助功能设置设置了大字体。现在我的文本已经用更大的字体显示了(超过18px)。我知道我可以使用< code > allowFontScaling = { false } ,但我不想失去文本的可访问性。我看到React native有一个API来获取字体比例< code > pixel ratio .
问题内容: 我有一个面板,其中正在移动一些2D对象。我已经根据需要重写了paintComponent()。现在,我希望能够放大和缩小该区域。放大时,将出现滚动条,通过滚动条可以滚动查看整个字段。在放大和缩小时,二维对象的大小应相应增加或减小。哪个Swing组件或什至是组件组合将有助于实现这一目标? 问题答案: 最简单的方法是修改面板并引入一个双倍来指示您的缩放级别。这双会指示你的规模,其中1是正常
问题内容: 我不明白为什么我缩小屏幕时字体没有减小。 我将所有CSS都设置为百分比,以便所有内容都能响应。 相反,当我缩小屏幕时,字体不会改变大小,从而弄乱了设计。 我正在24英寸显示器上构建我的投资组合站点,然后在13英寸屏幕上对其进行检查以确保它可以缩放。 问题答案: 我认为您要寻找的是 视口百分比单位 。 尝试这个: 通过此调整,当您调整浏览器窗口的大小时,字体将按比例缩放。 从规格: 5.
因此,我正在努力为我的HTML文档设计一个响应更快的设计,我想要排序的第一件事是根据容器的高度和宽度缩放字体大小。现在我有以下内容: 我研究了一下,在css中找到了“VW”这个单位,它允许字体根据容器进行缩放,但我注意到它只在我调整浏览器宽度时才起作用,这会得到如下结果: 如图所示,如果我调整浏览器的宽度,文本确实会缩放。但是,我意识到当我调整浏览器的高度时,它根本不会缩放。 我如何确保文本是基于
问题内容: 我建立了一个网站,问题是Chrome的显示尺寸大于Firefox。我尝试了几种匹配字体大小的方法,以px为单位指定字体,以%设置正文为100%,然后将元素设置为。这些都不起作用。静止图像显示的铬要大1个像素。 这是我用于字体大小的代码: 在#geral包裹整个站点的地方,而CSS上没有其他font-size语句,可以在我发布的链接中查看源代码。 我想知道是否有一种方法可以解决此问题,或
本文向大家介绍bmp 缩放代码(BMP位图任意放大 和缩小),包括了bmp 缩放代码(BMP位图任意放大 和缩小)的使用技巧和注意事项,需要的朋友参考一下 前几天碰上需要对bmp位图进行缩放的功能, 调用API函数,虽然能实现位图缩放,但是对有放大的效果好,缩小会造成失真,图像上有花点,让人难以接受 ,因为本人以前学易语言,易语言有一段代码,对bmp图像缩放效果非常 好, 昨天抽空,把它翻译成c+