MyExample AnimatedContainer ValueNotifier
unknown
dart
4 years ago
2.0 kB
6
Indexable
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
static const String _title = 'Flutter Code Sample';
@override
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
home: Scaffold(
appBar: AppBar(title: const Text(_title)),
body: const MyExample(),
),
);
}
}
class MyExample extends StatelessWidget {
const MyExample({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
/// [1]
ValueNotifier<bool> selectedValueNotifier = ValueNotifier(false);
/// [2] [ValueListenableBuilder] GestureDetector widgetini sararak
/// [selectedValueNotifier]'in durumu her değiştiğinde [value]'yı rebuild eder.
return ValueListenableBuilder<bool>(
/// [3] [valueListenable] parametresine [selectedValueNotifier]
/// değişkenini dinlemesini istedik.
valueListenable: selectedValueNotifier,
builder: (context, selected, child) {
return GestureDetector(
onTap: () {
///[4] Dinlenen değişkenin içindeki değere .value ile erişerek
/// durumunu tersine çevir.
selectedValueNotifier.value = !selected;
},
child: Center(
child: AnimatedContainer(
width: selected ? 200.0 : 100.0,
height: selected ? 100.0 : 200.0,
color: selected ? Colors.red : Colors.blue,
alignment: selected
? Alignment.center
: AlignmentDirectional.topCenter,
duration: const Duration(seconds: 2),
curve: Curves.fastOutSlowIn,
child: const FlutterLogo(size: 75),
),
),
);
});
}
}
Editor is loading...