Flutter 的新手。 我有这个按钮,按下就是在设备上启动日历。 我想让这个按钮动态化,因为我的模型/events.dart 列表中有超过 20 个日期,我想用特定日期启动日历,比如 DateTime('${events.date}') 也许? 有没有其他解决方案? Vs Code 错误告诉我我应该创建一个 getter 来解决这个问题。 想法?

import 'package:flutter/material.dart';
import 'package:add_2_calendar/add_2_calendar.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import '../model/events.dart';

class Calendar extends StatefulWidget {
  @override
  _CalendarState createState() => _CalendarState();
}

class _CalendarState extends State<Calendar> {
  final GlobalKey<ScaffoldState> scaffoldState = GlobalKey();

  @override
  Widget build(BuildContext context) {
    Event event = Event(
      title: '',
      description: '',
      location: '',
      startDate: DateTime.now(),
      endDate: DateTime.now(),
      allDay: false,
    );

    return Row(
      children: <Widget>[
        IconButton(
          icon: Icon(
            FontAwesomeIcons.calendarAlt,
            size: 30.0,
            color: Colors.green,
          ),
          onPressed: () {
            Add2Calendar.addEvent2Cal(event);
          },
        ),
      ],
    );
  }
}
import 'package:flutter/foundation.dart';

class Events {
  final String imagePath,
      title,
      description,
      location,
      duration,
      punchLine1,
      punchLine2,
      address,
      shareB,
      phone,
      fb,
      maps,
      guide,
      date;
  final List categoryIds, galleryImages;

  Events({
    @required this.imagePath,
    @required this.title,
    @required this.description,
    @required this.location,
    @required this.duration,
    @required this.punchLine1,
    @required this.punchLine2,
    @required this.categoryIds,
    @required this.galleryImages,
    @required this.address,
    @required this.shareB,
    @required this.phone,
    @required this.fb,
    @required this.maps,
    @required this.guide,
    @required this.date,
  });
}

final ponteRagogna = Events(
  imagePath: "assets/locations/ponte1.jpg",
  title: "Osteria al Ponte dal Lupo",
  description: "",
  location: "Ragogna",
  duration: "",
  punchLine1: "Osteria",
  punchLine2: " al Ponte dal Lupo",
  address: "Via al Ponte 6, Ragogna",
  maps: "46.184476,12.96572912",
  phone: "+393501073003",
  fb: "https://www.facebook.com/pages/category/Restaurant/Osteria-al-ponte-dal-lupo-2354276691519510/",
  galleryImages: [
    "assets/locations/ponte0.jpg",
    "assets/locations/ponte1.jpg",
    "assets/locations/ponte2.jpg",
  ],
  categoryIds: [
    2,
  ],
  shareB:
      "https://www.tripadvisor.it/Restaurant_Review-g666616-d3964038-Reviews-Osteria_al_Ponte-Cison_Di_Valmarino_Province_of_Treviso_Veneto.html",
  guide: "",
  date: "24-09-2020",
);

#1楼 票数:1 已采纳

您可以使用List<Events>

在你的 events.dart

final events = [
  ponteRagogna,
  new Events(...)
];

在您的代码中:

Row(
  children: [
    for (var staticEvent in events)
      IconButton(
        onPressed: () {
         final event = Event(
           title: '',
           description: '',
           location: '',
           startDate: DateTime(staticEvent.date),
           endDate: DateTime(staticEvent.date),
           allDay: false,
         );
         Add2Calendar.addEvent2Cal(event)
        },
      )
  ]
)

#2楼 票数:0

我通过在我的模型文件中添加 startdate、endate 来修复它,现在是动态的。 我现在唯一无法弄清楚的是我使用 DateTime.utc() 时的小时数。 在日历上再给我一个小时。

class Calendar extends StatelessWidget {
  final GlobalKey<ScaffoldState> scaffoldState = GlobalKey();

  @override
  Widget build(BuildContext context) {
    final events = Provider.of<Events>(context);

    return Padding(
      padding: const EdgeInsets.all(4.0),
      child: Row(
        children: <Widget>[
          IconButton(
            icon: Icon(
              FontAwesomeIcons.calendarAlt,
              size: 30.0,
              color: Colors.purple,
            ),
            onPressed: () {
              Event event = Event(
                title: events.title,
                description: events.description,
                location: events.location,
                startDate: events.startDate,
                endDate: events.endDate,
                allDay: false,
              );
              Add2Calendar.addEvent2Cal(event);
            },
          ),
        ],
      ),
    );
  }
}

  ask by blueprint translate from so

未解决问题?本站智能推荐:

1回复

flutter-在日历插件中制作动态标记事件

我想每4 days标记一次事件。 例如今天是1st ,标记该活动将在5th 、 10th 、 15th 、 20th 、 25th 、 30th日等可用。 如果今天是3rd ,则该活动将在8th 、 13th 、 18th等日期可用。 该功能如何工作? 我使用这个日历插件 https://pub.d
2回复

如何在Flutter中的日历轮播中单击时处理按钮颜色

我正在使用日历轮播日历轮播小部件进行颤振。 我正在尝试单击日历上的随机日期并更改按钮颜色并保持此颜色,但现在我无法获得此行为。 这是我的代码: 和当前的行为: 使用这些参数似乎不起作用,因为我正在寻找:
2回复

如何通过单击按钮动态创建新列表?

我正在 Flutter 中使用 Draggable(images)。 目的是提供一个按钮,单击该按钮将形成新的 DragTarget,用户可以将图像拖动到拖动目标。 在目标中拖动的图像列表将显示在相应的 DragTarget 中。 例如:给定一些口袋妖怪的图像,根据它们的类型将它们分组。 用户可以创
2回复

使用列表填充小部件来自预填充列表的函数-Flutter

我的代码背后的想法是用我从对象列表中获取的动态数据填充 Column 小部件,我使用 List>> 本质上只是一个对象列表。 我的列表 : 然后我在返回小部件的列中调用一个函数(我想返回一个列表,但它给出了一个错误) 小部件: 我使用 for 循环然后在函数中使用该动态数据制作一个小部件
2回复

如何动态传递参数?

我正在尝试在标题旁边创建一个按钮,但是我没有在开始时传递内容,而是尝试动态地进行操作,因此我使用了构造函数,但没有获得在调用构造函数时传递的值,而是不断获取空值。 那么,如何使用构造函数或其他任何方式动态传递参数? 这是我正在使用的课程
1回复

zk:扩展Datebox和Calendar小部件

我必须以以下方式修改Datebox和CalendarPop(Calendar)组件:如果我给它们指定了特定的日期/日期,则Datebox的Calendar将显示具有特定CSS的那些日期(例如假期的日期)。 在使用小部件扩展之前,我还没有做任何事情。 我已经检查了Datebox.js的源代码
1回复

如何在django中添加一个Calendar可视化小部件来选择日期?

我正在为一个django应用程序而烦恼,我还有下一个问题:如何在django中添加一个帮助人们选择日期的图标或小部件? 我的意思是,我不希望人们手动输入日期。 我希望他们通过视觉日历中的点击选择日期。 我该怎么做? 谢谢!
1回复

日历按钮行为不佳

这是初学者级的任务。 我正在尝试使用以下示例在Django中实现日历小部件: http://djangosnippets.org/snippets/1629/ : http://djangosnippets.org/snippets/1629/ 我将此日历放入已经具有“提交”按钮的表单内。