Skip to content

Instantly share code, notes, and snippets.

@slightfoot
Forked from branflake2267/main.dart
Last active February 10, 2024 05:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slightfoot/b45916c32889e10ca3f6014562d5c27b to your computer and use it in GitHub Desktop.
Save slightfoot/b45916c32889e10ca3f6014562d5c27b to your computer and use it in GitHub Desktop.
Flutter - Flutter - Auto Scaling the Text Size
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
double _prevScale;
double _scale;
@override
void initState() {
super.initState();
_prevScale = _scale = 1.0;
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onScaleUpdate: (ScaleUpdateDetails details) {
setState(() {
_scale = (_prevScale * (details.scale));
});
},
onScaleEnd: (ScaleEndDetails details) {
setState(() {
_prevScale = _scale;
});
},
child: Scaffold(
appBar: AppBar(
title: Text("Home"),
),
body: Center(
child: new Text("Howdy",
style: new TextStyle(fontSize: 16.0 * _scale),
),
),
),
);
}
}
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
double _prevScale;
double _scale;
@override
void initState() {
super.initState();
_prevScale = _scale = 1.0;
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onScaleUpdate: (ScaleUpdateDetails details) {
setState(() {
_scale = (_prevScale * (details.scale));
});
},
onScaleEnd: (ScaleEndDetails details) {
setState(() {
_prevScale = _scale;
});
},
child: Scaffold(
appBar: AppBar(
title: Text("Home"),
),
body: Center(
child: new SizedBox(
height: 20.0 * _scale,
child: new FittedBox(
child: new Text("Howdy"),
),
),
),
),
);
}
}
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
double _prevScale;
double _scale;
@override
void initState() {
super.initState();
_prevScale = _scale = 1.0;
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onScaleUpdate: (ScaleUpdateDetails details) {
setState(() {
_scale = (_prevScale * (details.scale));
});
},
onScaleEnd: (ScaleEndDetails details) {
setState(() {
_prevScale = _scale;
});
},
child: Scaffold(
appBar: AppBar(
title: Text("Home"),
),
body: Center(
child: Transform(
transform: new Matrix4.diagonal3Values(_scale, _scale, _scale),
alignment: Alignment.center,
child: new Text("Howdy"),
),
),
),
);
}
}
@programadorthi
Copy link

programadorthi commented Aug 1, 2018

This is a great example. I used FittedBox and it works. Thanks for sharing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment