我试图将我的容器的背景图像设置为来自资产的图像,如下所示:
return new Container(
decoration: new BoxDecoration(
image: new DecorationImage(
image: new AssetImage(images[index]),
fit: BoxFit.cover,
),
),
Run Code Online (Sandbox Code Playgroud)
但这需要一些时间来加载和返回空白屏幕,直到图像加载..
所以我尝试在构建之前预加载图像,如下所示:
@override
void initState() {
precacheImage(new AssetImage(images[1]), context);
precacheImage(new AssetImage(images[2]), context);
precacheImage(new AssetImage(images[3]), context);
super.initState();
}
Run Code Online (Sandbox Code Playgroud)
这返回了这个错误:
扑腾:???小部件库捕获的异常 ????????????????????????????????????????????? ??????????????? flutter:以下断言被抛出构建构建器:flutter:inheritFromWidgetOfExactType(MediaQuery) 或inheritFromElement() 在 flutter: _WalkthroughPageState.initState() 完成之前被调用。flutter: 当继承的widget发生变化时,例如Theme.of()的值发生变化,其依赖的flutter:widgets会被重建。如果依赖小部件对继承小部件的引用在构造函数 flutter: 或 initState() 方法中,那么重建的依赖小部件将不会反映 flutter: 继承小部件中的更改。flutter:通常对继承的小部件的引用应该出现在小部件 build() 方法中。或者,颤振:基于继承的小部件的初始化可以放在 didChangeDependencies 方法中,该方法 flutter: 在 initState 之后以及此后依赖项发生变化时调用。flutter: flutter: 当抛出异常时,这是堆栈:flutter: #0 StatefulElement.inheritFromElement。(package:flutter/src/widgets/framework.dart:3898:9) flutter: #1 StatefulElement.inheritFromElement (package:flutter/src/widgets/framework.dart:3931:6) flutter: #2 Element.inheritFromWidgetOfExactType (package :flutter/src/widgets/framework.dart:3274:14) flutter: #3 MediaQuery.of (package:flutter/src/widgets/media_query.dart:476:38) flutter: #4 createLocalImageConfiguration (package:flutter/src …
我正在尝试将两个字符串列表相互比较并检查是否至少有一个完全相同的字符串..
例如:
List<String> list1 = ['1','2','3','4'];
List<String> list2 = ['1','5','6','7'];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将执行操作,因为两者具有相同的字符串,即1,并且它可能不止一个完全相同的字符串并且操作将相同。
但如果他们没有任何类似的字符串,那么我会做另一个动作。
我怎么能做这样的事情?
我正在尝试在我拥有的特定日期创建倒计时,并显示到那时还剩多少小时、分钟和秒..
例如,我想将计数器日期设置为:2018 年 10 月 25 日星期四上午 7:14:05
我想为用户显示..剩余时间:hh:mm:ss 直到 10 月 25 日...
我试过这个:
@override
void initState() {
new CountdownTimer(new Duration(milliseconds: 1540451645), new Duration(seconds: 1)).listen((data) {
print('Remaining time: ${data.remaining.inSeconds}');
print(new DateTime.now().millisecondsSinceEpoch);
print(DateTime.fromMillisecondsSinceEpoch(data.remaining.inSeconds));
var format = new DateFormat("hh:mm:ss");
var dateString = format.format(DateTime.fromMillisecondsSinceEpoch(data.remaining.inSeconds));
print(dateString);
});
super.initState();
}
Run Code Online (Sandbox Code Playgroud)
但结果是:03:25:40.. 这真的不是真的......
这该怎么做?
我在我的应用程序中使用日期格式化程序来显示一些日期..但我希望这个日期以阿拉伯语显示..所以我尝试像这样更改格式化程序的语言环境:
var now = new DateTime.now();
var formatter = DateFormat.yMMMd("ar_SA");
String formatted = formatter.format(now);
print(formatted);
Run Code Online (Sandbox Code Playgroud)
但它不工作..
如果我把它改成这样:
var now = new DateTime.now();
var formatter = DateFormat.yMMMd("en_US");
String formatted = formatter.format(now);
print(formatted);
Run Code Online (Sandbox Code Playgroud)
会正常工作..但我希望日期以阿拉伯语显示..
如何实现这一目标?我希望日期是例如 ?? ????? ????.. 怎么做?
我尝试在多个列表中循环,最后比较它们的名称,如果它们不匹配,则将其从列表中删除......
\n\n但我收到此错误:
\n\n\n\n\n迭代期间并发修改:
\n
虽然我已经复制了原始列表只是为了避免这个错误..但仍然得到它..我尝试的是:
\n\nglobals.filteredPollsList = pollsList;\npollsList.forEach( (p) {\n for (var e in entitiesList) {\n print(e.name);\n for (var entity in entitiesFilter) {\n print(entity);\n print(e.name);\n if (e.name != entity && p.entityId != e.id) {\n print('true');\n globals.filteredPollsList.remove(p);\n }\n }\n }\n});\nRun Code Online (Sandbox Code Playgroud)\n\n但我收到此错误:
\n\nflutter: \xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1 EXCEPTION CAUGHT BY GESTURE \xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\nflutter: The following ConcurrentModificationError was thrown while handling a gesture:\nflutter: Concurrent modification during iteration: Instance(length:8) of '_GrowableList'.\nflutter:\nflutter: When the exception was thrown, this was the stack:\nflutter: #0 …Run Code Online (Sandbox Code Playgroud) 我有列表视图,其中包含ExpansionPanelList并且每个ExpansionPanel视图都有一个按钮..选中/取消选中它会改变颜色。例如,当我取消选中列表中的前三个,然后向下滚动到列表末尾,然后再次出现时,我会看到未选中的项目再次被选中。
这是我的代码:
new Expanded(
child: new ListView(
padding: EdgeInsets.only(
right: 20.0, left: 20.0 /*, bottom: 20.0*/),
children: interestsMap['interests']
.map<Widget>((i) => new InterestsItem.fromJson(i))
.toList()),
),
Run Code Online (Sandbox Code Playgroud)
清单是:
class _InterestsItemState extends State<InterestsItem> {
final String id;
final String name;
final String icon;
final String description;
bool isExpanded = false;
var color = Colors.white;
var toggle = false;
bool clicked = true;
_InterestsItemState(this.id, this.name, this.icon, this.description);
@override
Widget build(BuildContext context) {
return this.clicked
? new CustomExpansionPanelList(
expansionCallback: (int index, bool …Run Code Online (Sandbox Code Playgroud)