问题描述
image pubspec
我想将 const [enteredFilter,setEnteredFilter] = useState("");
useEffect(() => {
fetch("userConf_user.json",{
headers: {
"Content-Type": "application/json",Accept: "application/json",},})
.then(function (response) {
return response.json();
})
.then(function (responseData) {
let users = responseData.result.user;
const loadedData = [];
for (let obj in users) {
loadedData.push(users[obj]);
}
onLoadUsers(loadedData);
setEnteredFilter(
loadedData.filter((User) => {
User === loadedData.map((user) => user.id);
})
);
});
},[enteredFilter,onLoadUsers]);
return (
<section className="search">
<Card>
<div className="search-input">
<label>search by Id: </label>
<input
type="text"
value={enteredFilter}
onChange={(Event) => setEnteredFilter(Event.target.value)}
/>
</div>
</Card>
</section>
);
});
设置为我的 Flutter 应用程序的默认字体系列。
默认 Roboto fontFamily 更改为 NoirPro,但字体粗细 Noir Pro
无法正常工作。我找不到任何其他在线帮助。这让我很沮丧
在e.g(.w400,w500,w600)
pubspec.yaml
fonts:
- family: NoirPro
fonts:
- asset: resources/fonts/NoirPro_Light.ttf
weight: 300
- asset: resources/fonts/NoirPro_normal.ttf
weight: 400
- asset: resources/fonts/NoirPro_Medium.ttf
weight: 500
- asset: resources/fonts/NoirPro_Bold.ttf
weight: 700
- asset: resources/fonts/NoirPro_Heavy.ttf
weight: 800
In main.dart
解决方法
我已经找到了原因及其非常微不足道的:
Flutter 根据字体本身的元数据匹配系列中的字体,而不是 pubspec.yaml 中声明的样式描述符。
我的 NoirPro、中号和粗体字体包含分别声明其权重为 400、410 和 420 的元数据。但是,Flutter 文本子系统仅支持表示 100 (https://api.flutter.dev/flutter/dart-ui/FontWeight-class.html) 的偶数倍的字体权重桶。所以这三种字体都映射到 FontWeight.w400,字体样式匹配器不能根据权重在这些字体之间进行选择。
(您可以使用此站点检查字体文件的元数据:https://fontdrop.info/)
在 pubspec.yaml 中将这些字体声明为不同的系列可以解决这个问题。
目前根据字体本身定义的权重元数据选择请求的权重。 pubspec.yaml 中的权重被忽略。
应该更新文档(食谱)以反映这一点,以免混淆其他开发人员。 现在我的 pubspec.yaml 是:
fonts:
- family: NoirProNormal
fonts:
- asset: resources/fonts/NoirPro_Normal.ttf
- family: NoirProLight
fonts:
- asset: resources/fonts/NoirPro_Light.ttf
- family: NoirProMedium
fonts:
- asset: resources/fonts/NoirPro_Medium.ttf
- family: NoirProBold
fonts:
- asset: resources/fonts/NoirPro_Bold.ttf
- family: NoirProHeavy
fonts:
- asset: resources/fonts/NoirPro_Heavy.ttf
当使用文本小部件时:
Text(
"Hello World",style: TextStyle(
fontSize: size.width * 0.075,fontFamily: "NoirProMedium",color: Colors.white)
),
,
尝试定义不带空格的姓
- family: NoirPro
,
尝试在没有空格的情况下定义 - family: NoirPro
并且您还需要在文本小部件中提供您想要的权重
Text(
"Hello",style: TextStyle(
fontWeight: FontWeight.w400
),)