问题描述
这里,我有两个文件 dot_indicator.dart 和 main.dart。
Dots 类“updatePosition()”中的函数,如何在PageView 小部件的onPageChanged 中访问它。
import 'package:Flutter/material.dart';
import 'package:dots_indicator/dots_indicator.dart';
class Dots extends StatefulWidget {
@override
_Dotsstate createState() => _Dotsstate();
}
class _Dotsstate extends State<Dots> {
final _totalDots = 2;
double currentPosition = 0.0;
double validPosition(double position) {
if (position >= _totalDots) return 0;
if (position < 0) return _totalDots - 1.0;
return position;
}
void updatePosition(double position) {
setState(() => currentPosition = validPosition(position));
}
String getCurrentPositionPretty() {
return (currentPosition + 1.0).toStringAsPrecision(2);
}
@override
Widget build(BuildContext context) {
return DotsIndicator(
dotsCount: _totalDots,position: currentPosition,decorator: DotsDecorator(
activeColor: Colors.green,activeSize: Size.square(30.0),activeShape: RoundedRectangleBorder(),),);
}
}
这个小部件有函数updatePosition(index),我想在另一个类中访问它。
import 'package:Flutter/material.dart';
import 'package:mobile_app/bottom_nav.dart';
import 'package:mobile_app/dot_indicator.dart';
import 'package:mobile_app/first_page.dart';
import 'package:mobile_app/second_page.dart';
import 'package:provider/provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,home: Scaffold(
appBar: AppBar(
backgroundColor: Color.fromrGBO(250,250,100),elevation: 0.0,title: Stack(
children: <Widget>[
Container(
width: double.infinity,child: Dots(),],body: PageSlider(),bottomNavigationBar: AppBottomNav(),);
}
}
class PageSlider extends StatefulWidget {
const PageSlider({Key? key}) : super(key: key);
@override
_PageSliderState createState() => _PageSliderState();
}
class _PageSliderState extends State<PageSlider> {
Dots _dots = new Dots();
@override
Widget build(BuildContext context) {
PageController controller = PageController(initialPage: 0,keepPage: true);
return PageView(
controller: controller,onPageChanged: (index) => {
print(index),//I want the updatePosition(index) here
},children: <Widget>[
FirstPage(),SecondPage(),);
}
}
我尝试创建 Dots 类的实例并尝试在 PageSlider 类中使用它,它仍然无法工作。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)