Skip to content

Instantly share code, notes, and snippets.

@take4blue
take4blue / radar_chart_data_fix_minmax.dart
Created February 16, 2024 06:49
A class that allows you to set the maximum and minimum tick values in fl_chart's RadarChart. Also, by using this class, you can plot at the center.
import 'dart:ui';
import 'package:fl_chart/fl_chart.dart';
import 'package:fl_chart/src/utils/lerp.dart';
import 'package:flutter/material.dart';
/// Allow maxEntry and minEntry values to be specified with parameters
class RadarChartDataFixMinMax extends RadarChartData {
RadarChartDataFixMinMax(
{required super.dataSets,
@take4blue
take4blue / popupmenutile.dart
Created May 8, 2023 07:09
popupmenuの中身をtile形式で表示するためのウィジェット類
import 'package:flutter/material.dart';
/// Popup用のTile</br>
/// 呼び出し側は[padding]を[EdgeInsets.zero]にする必要あり</br>
/// subtitleのスタイルはLabel Medium/On surface variantを使用する。</br>
/// スタイルは https://m2.material.io/components/menus#specs,
/// https://m3.material.io/components/menus/specs を参考にしている。
class PopupMenuTile extends StatelessWidget {
const PopupMenuTile({
super.key,
@take4blue
take4blue / aligneddialog.dart
Created April 26, 2023 05:33
位置指定と配置したダイアログ基準としたTransitionアニメーションのサンプル
import 'package:aligned_dialog/aligned_dialog.dart';
import 'package:flutter/material.dart';
void main() => runApp(const GeneralDialogApp());
class GeneralDialogApp extends StatelessWidget {
const GeneralDialogApp({super.key});
@override
Widget build(BuildContext context) {
@take4blue
take4blue / resumupopup.dart
Created April 25, 2023 00:35
レジューム後に別画面に遷移する方法を実装したサンプル
import 'package:flutter/material.dart';
main() {
runApp(const MaterialApp(home: MainApp()));
}
class MainApp extends StatefulWidget {
const MainApp({Key? key}) : super(key: key);
@override
@take4blue
take4blue / selectable_filter_chip.dart
Created April 5, 2023 09:24
Material 3のFilterChipに掲載されていたメニューから項目を選択できる機能を実装したもの
import 'package:flutter/material.dart';
/// FilterChipに選択機能を設けたもの
class SelectableFilterChip<T> extends StatefulWidget {
SelectableFilterChip({
required this.onChanged,
required this.items,
this.hint,
super.key,
this.value,
@take4blue
take4blue / FutureCancel.dart
Created March 30, 2023 06:57
非同期関数を途中で止める例
import 'package:async/async.dart';
import 'dart:async';
Future<int> test(String name, {List<bool>? cancel}) async {
for (int i = 0; i < 4; i++) {
await Future.delayed(const Duration(seconds: 1));
print("[$name] count = $i");
if (cancel != null && cancel[0]) {
print("[$name] canceled");
break;
@take4blue
take4blue / FutureTimeout.dart
Created March 30, 2023 04:42
Future.timeoutサンプル
Future<int> test(String name) async {
for (int i = 0; i < 3; i++) {
await Future.delayed(const Duration(seconds: 1));
print("[$name] count = $i");
}
print("[$name] test end");
return 3;
}
void main(List<String> args) async {
@take4blue
take4blue / Future2.dart
Created March 30, 2023 04:25
FutureBuilderのサンプル
import 'dart:async';
import 'package:flutter/material.dart';
class FutureRefresh7 extends StatefulWidget {
const FutureRefresh7({super.key});
@override
State<FutureRefresh7> createState() => _FutureRefresh7State();
}
@take4blue
take4blue / asynchrony.dart
Last active November 9, 2022 09:50
Dart asynchrony support test proguram
import 'dart:async';
final watch = Stopwatch();
main() {
ePrint('main #1 of 2');
scheduleMicrotask(() => ePrint('microtask #1 of 3'));
watch.start();
ePrint("start");
@take4blue
take4blue / futurebuilderext.dart
Created July 29, 2022 10:06
FutureBuilderを拡張してwaitingになるまでの時間を設定できるようにした。
import 'dart:async';
import 'package:flutter/material.dart';
/// FutureBuilderを拡張してwaitingになるまでの時間を設定できるようにした。
/// FutureBuilderからの変更点はactiveTimeを設定できる点。
/// activeTimeが経過する前は[ConnectionState.active]で経過してデータが
/// そろっていない場合は[ConnectionState.waiting]になる。
class FutureBuilderExt<T> extends FutureBuilder<T> {
const FutureBuilderExt({
Key? key,