首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firestore flutter应用程序在2秒后出现错误?

Firestore flutter应用程序在2秒后出现错误?
EN

Stack Overflow用户
提问于 2020-06-09 00:04:00
回答 1查看 62关注 0票数 0

我正在为我的规划器应用程序使用flutter_calendar_carousel包。我正在从firestore获取数据,所以它会显示大约2秒钟,然后我收到这个错误"package:flutter/src/widgets/container.dart':Failed断言:第316行pos 15:‘paddingpadding.isNonNegative’:is not ==。“

这是我的代码。

代码语言:javascript
运行
复制
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),
    ),
    );
  }
}

我是否需要将其设为异步,或者问题出在哪里?

EN

回答 1

Stack Overflow用户

发布于 2020-06-09 02:31:09

从这个SO answer TLDR

Flutter有一个复杂但有效的算法来渲染它的小部件。在运行时分析页边距和填充,并确定小部件的最终大小和位置。当您试图发布负边距时,您故意创建了一个无效的布局,其中小部件以某种方式脱离了它应该占据的空间。

考虑阅读文档here.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62266333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档