1
0
mirror of https://github.com/flutter/samples.git synced 2025-11-08 13:58:47 +00:00
Files
samples/date_planner/lib/task_row.dart
Eric Windmill 2999d738b8 Dart 3.9 / Flutter 3.35 [first LLM release] (#2714)
I got carried away with Gemini and basically rewrote CI and the release
process for the new LLM reality. This work was largely completed by
Gemini.

- Bump all SDK versions to the current beta (3.9.0-0)
- Run `flutter channel beta`
- Wrote `ci_script.dart` to replace the bash scripts
- Converted repository to pub workspace #2499 
- Added llm.md and release.md
- Added redirect for deprecated Samples Index

## Pre-launch Checklist

- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I have added sample code updates to the [changelog].
- [x] I updated/added relevant documentation (doc comments with `///`).
2025-08-14 12:26:24 -07:00

60 lines
1.5 KiB
Dart

// Copyright 2024 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/cupertino.dart';
import 'event_task.dart';
class TaskRow extends StatefulWidget {
final EventTask task;
final bool isEditing;
const TaskRow({super.key, required this.task, required this.isEditing});
@override
State<TaskRow> createState() => _TaskRowState();
}
class _TaskRowState extends State<TaskRow> {
final _taskText = TextEditingController();
@override
void initState() {
_taskText.text = widget.task.text;
super.initState();
}
@override
Widget build(BuildContext context) {
return Row(
children: [
CupertinoButton(
onPressed: widget.isEditing
? () {
setState(() {
widget.task.isCompleted = !widget.task.isCompleted;
});
}
: null,
child: Icon(
widget.task.isCompleted
? CupertinoIcons.checkmark_circle_fill
: CupertinoIcons.circle,
color: CupertinoColors.black,
),
),
Expanded(
child: widget.isEditing
? CupertinoTextField(
decoration: null,
padding: EdgeInsets.zero,
controller: _taskText,
onChanged: (value) => widget.task.text = value,
)
: Text(widget.task.text),
),
],
);
}
}