【发布时间】:2020-11-05 16:45:23
【问题描述】:
我不知道它实际上叫什么,所以我随机问了一个问题并忽略了所有语法错误,只是给了我一个问题的解决方案。当我滑动到结束页面时,我想将蓝色更改为橙色,我是颤振的初学者,所以我需要帮助......
这是我的 OnboardingScreen.dart 文件
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:secret_partner/data/data.dart';
class OnboardingScreen extends StatefulWidget {
@override
_OnboardingScreenState createState() => _OnboardingScreenState();
}
class _OnboardingScreenState extends State<OnboardingScreen> {
List<SliderModel> mySLides = new List<SliderModel>();
int slideIndex = 0;
PageController controller;
Widget _buildPageIndicator(bool isCurrentPage){
return Container(
margin: EdgeInsets.symmetric(horizontal: 2.0),
height: isCurrentPage ? 10.0 : 6.0,
width: isCurrentPage ? 10.0 : 6.0,
decoration: BoxDecoration(
color: isCurrentPage ? Colors.grey : Colors.grey[300],
borderRadius: BorderRadius.circular(12),
),
);
}
@override
void initState() {
// TODO: implement initState
super.initState();
mySLides = getSlides();
controller = new PageController();
}
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [const Color(0xFF9E9E9E), const Color(0xFFE0E0E0)])),
child: Scaffold(
backgroundColor: Colors.white,
body: Container(
height: MediaQuery.of(context).size.height - 50,
child: PageView(
controller: controller,
onPageChanged: (index) {
setState(() {
slideIndex = index;
});
},
children: <Widget>[
SlideTile(
imagePath: mySLides[0].getImageAssetPath(),
title: mySLides[0].getTitle(),
desc: mySLides[0].getDesc(),
),
SlideTile(
imagePath: mySLides[1].getImageAssetPath(),
title: mySLides[1].getTitle(),
desc: mySLides[1].getDesc(),
),
SlideTile(
imagePath: mySLides[2].getImageAssetPath(),
title: mySLides[2].getTitle(),
desc: mySLides[2].getDesc(),
)
],
),
),
bottomSheet: slideIndex != 2 ? Container(
margin: EdgeInsets.symmetric(vertical: 1),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
FlatButton(
onPressed: (){
controller.animateToPage(2, duration: Duration(milliseconds: 400), curve: Curves.linear);
},
splashColor: Colors.orange[200],
child: Text(
"SKIP",
style: TextStyle(color: Color(0xFFF57C00), fontWeight: FontWeight.w600),
),
),
Container(
child: Row(
children: [
for (int i = 0; i < 3 ; i++) i == slideIndex ? _buildPageIndicator(true): _buildPageIndicator(false),
],),
),
FlatButton(
onPressed: (){
print("this is slideIndex: $slideIndex");
controller.animateToPage(slideIndex + 1, duration: Duration(milliseconds: 500), curve: Curves.linear);
},
splashColor: Colors.grey[200],
child: Text(
"NEXT",
style: TextStyle(color: Color(0xFFF57C00), fontWeight: FontWeight.w600),
),
),
],
),
): InkWell(
onTap: (){
print("Get Started Now");
},
child: Container(
height: Platform.isIOS ? 60 : 50,
color: Colors.deepOrange,
alignment: Alignment.center,
child: Text(
"GET STARTED NOW",
style: TextStyle(color: Colors.white, fontWeight: FontWeight.w600),
),
),
),
),
);
}
}
class SlideTile extends StatelessWidget {
final String imagePath, title, desc;
SlideTile({this.imagePath, this.title, this.desc});
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 20),
alignment: Alignment.center,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.asset(imagePath),
SizedBox(
height: 40,
),
Text(title, textAlign: TextAlign.center,style: TextStyle(
fontWeight: FontWeight.w500,
fontSize: 20
),),
SizedBox(
height: 20,
),
Text(desc, textAlign: TextAlign.center,style: TextStyle(
fontWeight: FontWeight.w500,
fontSize: 14))
],
),
);
}
}
我的 data.dart 文件
class SliderModel{
String imageAssetPath;
String title;
String desc;
SliderModel({this.imageAssetPath,this.title,this.desc});
void setImageAssetPath(String getImageAssetPath){
imageAssetPath = getImageAssetPath;
}
void setTitle(String getTitle){
title = getTitle;
}
void setDesc(String getDesc){
desc = getDesc;
}
String getImageAssetPath(){
return imageAssetPath;
}
String getTitle(){
return title;
}
String getDesc(){
return desc;
}
}
List<SliderModel> getSlides(){
List<SliderModel> slides = new List<SliderModel>();
SliderModel sliderModel = new SliderModel();
//1
sliderModel.setDesc("Discover Restaurants offering the best fast food food near you on Foodwa");
sliderModel.setTitle("Search");
sliderModel.setImageAssetPath("assets/images/illustration.png");
slides.add(sliderModel);
sliderModel = new SliderModel();
//2
sliderModel.setDesc("Our veggie plan is filled with delicious seasonal vegetables, whole grains, beautiful cheeses and vegetarian proteins");
sliderModel.setTitle("Order");
sliderModel.setImageAssetPath("assets/images/illustration2.png");
slides.add(sliderModel);
sliderModel = new SliderModel();
//3
sliderModel.setDesc("Food delivery or pickup from local restaurants, Explore restaurants that deliver near you.");
sliderModel.setTitle("Eat");
sliderModel.setImageAssetPath("assets/images/illustration3.png");
slides.add(sliderModel);
sliderModel = new SliderModel();
return slides;
}
【问题讨论】: