как динамический менять appBar title при скроллинге?
как динамический менять title в AppBar при скроллинге, как на этой гифке:
import 'package:flutter/material.dart';
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
ScrollController controller = ScrollController();
Widget appBarTitle = Text('title');
@override
void initState() {
onScrolling();
super.initState();
}
void onScrolling(){
if(controller.position.pixels > 200){
setState(() {
appBarTitle = RaisedButton(onPressed: (){}, child: Text('title'),);
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: appBarTitle,
),
body: ListView(
controller: controller,
children: <Widget>[
Container(
height: 1200,
color: Colors.amberAccent,
),
Container(
height: 1200,
color: Colors.green,
),
Container(
height: 1200,
color: Colors.yellow
),
],
),
);
}
}
Ответы (1 шт):
Автор решения: Kizat Suleimenov
→ Ссылка
нашел такой способ:
@override
void initState() {
controller = ScrollController();
controller.addListener(_onScrolling);
super.initState();
}
_onScrolling(){
if (controller.offset >= 200 && !controller.position.outOfRange) {
setState(() {
appBarTitle = RaisedButton(onPressed: (){}, child: Text('data'),);
});
} else if (controller.offset <= 200 * 2 &&
!controller.position.outOfRange) {
setState(() {
appBarTitle = Text('title');
});
}
}
но теперь при скроллинге жутко тормозит