Firebase Firestore Flatter应用程序在2秒后出错?
我正在为我的planner应用程序使用Flatter_calendar_carousel软件包。我从firestore获取数据,这样它会显示2秒钟,然后我得到以下错误“package:flatter/src/widgets/container.dart”:失败的断言:第316行pos 15:“padding==null | | padding.isNonNegative”:不正确 这是我的密码Firebase Firestore Flatter应用程序在2秒后出错?,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我正在为我的planner应用程序使用Flatter_calendar_carousel软件包。我从firestore获取数据,这样它会显示2秒钟,然后我得到以下错误“package:flatter/src/widgets/container.dart”:失败的断言:第316行pos 15:“padding==null | | padding.isNonNegative”:不正确 这是我的密码 import 'package:cloud_firestore/cloud_firestore.dar
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter_calendar_carousel/flutter_calendar_carousel.dart' show CalendarCarousel;
import 'package:flutter_calendar_carousel/classes/event.dart';
import 'package:flutter_calendar_carousel/classes/event_list.dart';
import 'package:intl/intl.dart' show DateFormat;
bool onDarkMode = false;
class MonthPageTest extends StatefulWidget {
@override
_MonthPageTestState createState() => _MonthPageTestState();
}
class _MonthPageTestState extends State<MonthPageTest> {
final databaseReference = Firestore.instance.collection("Planerino").document("UserSettings");
final databaseRef = Firestore.instance.collection("Eventhmonth");
darkmode() async{
try {
databaseReference.updateData({'Darkmode': onDarkMode});
}catch (e) {
print(e.toString());
}
}
@override
void initState(){
super.initState();
}
@override
void dispose(){
super.dispose();
}
toggleButton(){
setState(() {
onDarkMode = !onDarkMode;
});
darkmode();
}
//calender
DateTime _currentDate = DateTime.now();
static Widget _eventIcon = new Container(
width: 40.0,
height: 40.0,
decoration: new BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(1000)),
border: Border.all(color: Colors.blue, width: 6.0)),
child: new Icon(
Icons.person,
color: Colors.amber,
size: 40.0,
),
);
//function
EventList<Event> _markedDateMap = new EventList<Event>(
events: {
new DateTime(2020, 6, 24): [
new Event(
date: new DateTime(2020, 6, 13),
icon: _eventIcon,
dot: Container(
margin: EdgeInsets.symmetric(horizontal: 10.0, vertical: 10.0),
color: Colors.red,
),
),
],
},
);
Widget builderino(BuildContext context){
return StreamBuilder(
stream: databaseRef.snapshots(),
builder: (context, dataSnapshot){
var ref = dataSnapshot.data.documents;
for (var i = 0; i < ref.length; i++) {
String valueString = ref[i]['color'].split('(0x')[1].split(')')[0];
int value = int.parse(valueString, radix: 16);
Color newColor = new Color(value);
_markedDateMap.add(new DateTime(ref[i]['year'], ref[i]['month'], ref[i]['day']),
Event(
date: new DateTime(2020, 6, 13),
icon: _eventIcon,
dot: Container(
child: Padding(
padding: EdgeInsets.only(top: 90.0),
child: Container( alignment: Alignment.center, child: Text(ref[i]['description'], style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.w300), textAlign: TextAlign.center,)),
),
margin: EdgeInsets.symmetric(horizontal: 10.0, vertical: 10.0),
decoration: BoxDecoration(color: newColor),
),
));
}
return CalendarCarousel<Event>(
onDayPressed: (DateTime date, List<Event> events) {
this.setState(() => _currentDate = date);
events.forEach((event) => print(event.title));
},
weekendTextStyle: TextStyle(
color: Colors.red,
fontSize: 28.0,
),
markedDatesMap: _markedDateMap,
markedDateIconBuilder: (event) {
return event.dot;
},
showIconBehindDayText: true,
markedDateShowIcon: true,
markedDateIconMaxShown: 1000,
todayButtonColor: Colors.black12,
markedDateMoreShowTotal: true,
headerTextStyle: TextStyle(fontSize: 34.0, color: Colors.blue[300]),
daysTextStyle: TextStyle(fontSize: 28.0, color: onDarkMode ? Colors.white : Colors.black45),
todayTextStyle: TextStyle(fontSize: 28.0, color: onDarkMode ? Colors.white : Colors.black45),
weekdayTextStyle: TextStyle(fontSize: 28.0),
);
}
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: onDarkMode ? Colors.black87 : Colors.white,
margin: EdgeInsets.symmetric(horizontal: 16.0),
child: builderino(context),
),
);
}
}
import'包:cloud_firestore/cloud_firestore.dart';
导入“套装:颤振日历旋转木马/颤振日历旋转木马。dart”显示日历旋转木马;
导入“package:flatter_calendar_carousel/classes/event.dart”;
导入“package:flatter_calendar_carousel/classes/event_list.dart”;
导入“package:intl/intl.dart”显示日期格式;
bool-onDarkMode=false;
类MonthPageTest扩展StatefulWidget{
@凌驾
_MonthPageTestState createState();
}
类_MonthPageTestState扩展状态{
final databaseReference=Firestore.instance.collection(“Planerino”).document(“UserSettings”);
final databaseRef=Firestore.instance.collection(“Eventhmonth”);
darkmode()异步{
试一试{
databaseReference.updateData({'Darkmode':onDarkMode});
}捕获(e){
打印(如toString());
}
}
@凌驾
void initState(){
super.initState();
}
@凌驾
无效处置(){
super.dispose();
}
切换按钮(){
设置状态(){
onDarkMode=!onDarkMode;
});
暗模式();
}
//压延机
DateTime _currentDate=DateTime.now();
静态小部件_eventIcon=新容器(
宽度:40.0,
身高:40.0,
装饰:新盒子装饰(
颜色:颜色,白色,
borderRadius:borderRadius.all(半径圆形(1000)),
边框:边框。全部(颜色:Colors.blue,宽度:6.0)),
孩子:新图标(
一个人,
颜色:颜色。琥珀色,
尺寸:40.0,
),
);
//作用
事件列表_markedDateMap=新事件列表(
活动:{
新日期时间(2020年6月24日):[
新事件(
日期:新日期时间(2020年6月13日),
图标:_eventIcon,
dot:容器(
边缘:边缘组。对称(水平:10.0,垂直:10.0),
颜色:颜色,红色,
),
),
],
},
);
小部件构建器no(构建上下文){
返回流生成器(
流:databaseRef.snapshots(),
生成器:(上下文,数据快照){
var ref=dataSnapshot.data.documents;
对于(变量i=0;i\u currentDate=日期);
events.forEach((event)=>print(event.title));
},
weekendTextStyle:TextStyle(
颜色:颜色,红色,
字体大小:28.0,
),
markedDatesMap:_markedDateMap,
markedDateIconBuilder:(事件){
return-event.dot;
},
showIconBehindDayText:true,
markedDateShowIcon:正确,
markedDateIconMaxShown:1000,
今天的按钮颜色:颜色。黑色12,
markedDateMoreShowTotal:对,
headerTextStyle:TextStyle(fontSize:34.0,颜色:Colors.blue[300]),
daysTextStyle:TextStyle(fontSize:28.0,颜色:onDarkMode?颜色。白色:颜色。黑色45),
todayTextStyle:TextStyle(fontSize:28.0,颜色:onDarkMode?颜色。白色:颜色。黑色45),
weekdayTextStyle:TextStyle(fontSize:28.0),
);
}
);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
颜色:onDarkMode?颜色。黑色87:颜色。白色,
边缘:边缘组。对称(水平:16.0),
子项:builderino(上下文),
),
);
}
}
我需要使其异步还是有什么问题
TLDR
颤振有一个复杂但有效的算法来呈现它的小部件。在运行时分析边距和填充,并确定小部件的最终大小和位置。当您试图发布负边距时,您故意创建了一个无效的布局,其中小部件以某种方式从它应该占用的空间中退出
考虑从本文档中读取文档
TLDR
颤振有一个复杂但有效的算法来呈现它的小部件。在运行时分析边距和填充,并确定小部件的最终大小和位置。当您试图发布负边距时,您故意创建了一个无效的布局,其中小部件以某种方式从它应该占用的空间中退出
考虑一下,当我第一次启动文档时,我没有收到任何错误,当我重新启动它时,它是jsut。当我第一次启动它时,我没有收到任何错误,当我重新启动它时,它是jsut。