当我在 Gmail 中打开时,HTML 电子邮件背景图像重复

问题描述

出于某种原因,当我在 Gmail 中打开时,图像仍在重复。 (我在代码后面有封闭语句。)

import 'dart:convert';
import 'package:Flutter/material.dart';
import 'package:syncfusion_Flutter_datagrid/datagrid.dart';
import 'package:http/http.dart'as http;

class AllQuestion extends StatefulWidget {
 String fldPaperTypeID;
 AllQuestion({this.fldPaperTypeID});
@override
_AllQuestionState createState() => _AllQuestionState();
}
List<Question> _question;
List<Question> populateData;

QuestionDataSource _questionDataSource = QuestionDataSource();
List<Question> paginatedDataSource = [];

class _AllQuestionState extends State<AllQuestion> {
bool showLoadingIndicator = true;

Future<List> GetAllQuestion() async{

final response = await http.post('http://eduapp.studysmile.lk/getquestion',body: {"fldPaperTypeID":widget.fldPaperTypeID});
return json.decode(response.body);
}
@override
void initState() {
// Todo: implement initState
super.initState();
_question = populateData();
}
@override

Widget build(BuildContext context) {
return Scaffold(
  appBar: AppBar(
    title: Text('Question'),),body: LayoutBuilder(
    builder: (context,constraints) {
      return Row(children: [
        Column(
          children: [
            SizedBox(
                height: constraints.maxHeight - 60,width: constraints.maxWidth,child: buildStack(constraints)),Container(
              height: 60,child: SfDataPager(
                rowsPerPage: 1,direction: Axis.horizontal,onPageNavigationStart: (int pageIndex) {
                  setState(() {
                    showLoadingIndicator = true;
                  });
                },delegate: _questionDataSource,onPageNavigationEnd: (int pageIndex) {
                  setState(() {
                    showLoadingIndicator = false;
                  });
                },)
          ],]);
    },);
}

Widget buildDataGrid(BoxConstraints constraint) {
return SfDataGrid(
    source: _questionDataSource,columnWidthMode: ColumnWidthMode.fill,columns: <GridColumn>[
      GridNumericColumn(mappingName: 'id',headerText: 'ID'),GridTextColumn(mappingName: 'name',headerText: 'Name'),GridNumericColumn(mappingName: 'salaryS',headerText: 'Salary'),]);
}

Widget buildStack(BoxConstraints constraints) {
List<Widget> _getChildren() {
  final List<Widget> stackChildren = [];
  stackChildren.add(buildDataGrid(constraints));

  if (showLoadingIndicator) {
    stackChildren.add(Container(
      color: Colors.black12,height: constraints.maxHeight,child: Align(
        alignment: Alignment.center,child: CircularProgressIndicator(
          strokeWidth: 3,));
  }

  return stackChildren;
}

return Stack(
  children: _getChildren(),);
}
 /*  List<Question> populateData() {
return [
  Question(10001,'James',20000),Question(10002,'Kathryn',30000),Question(10001,];
}*/
Future<List<Question>> populateData()async{
final response = await http.post('http://eduapp.studysmile.lk/getquestion',body: 
{"fldPaperTypeID":widget.fldPaperTypeID});
List<Question> populateData = json.decode(response.body);
return populateData;


 }
}
/*
 class SendallQuestion extends StatelessWidget {

List list;
SendallQuestion({this.list});
@override
Widget build(BuildContext context) {
return  ListView.builder(
    itemCount: list == null?0:list.length,itemBuilder: (ctx,i){
      return Container(
        alignment: Alignment.center,margin: EdgeInsets.all(20),child: FlatButton(
          child: Align(
              alignment: Alignment(0.2,0.6),child: Text(list[i]['fldQuestion'],style: TextStyle(fontSize: 20.0),)
          ),color: Color(0xff7c4dff),textColor: Colors.white,onpressed: (){

          },);

    }
);
 }
}*/

class Question{

final int fldQuestionID;
final int fldPaperTypeID;
final String fldQuestion;
Question(this.fldPaperTypeID,this.fldQuestion,this.fldQuestionID);
}

class QuestionDataSource extends DataGridSource<Question> {
@override
List<Question> get dataSource => paginatedDataSource;
@override
Object getValue(Question question,String columnName) {
switch (columnName) {
  case 'id':
    return question.fldPaperTypeID;
    break;
  case 'name':
    return question.fldQuestionID;
    break;
  case 'salaryS':
    return question.fldQuestion;
    break;
  default:
    return ' ';
    break;
}
}

@override
int get rowCount => _question.length;

@override
Future<bool> handlePageChange(int oldPageIndex,int newPageIndex,int startRowIndex,int rowsPerPage) async {
int endindex = startRowIndex + rowsPerPage;
if (endindex > _question.length) {
  endindex = _question.length - 1;
}

await Future.delayed(Duration(milliseconds: 2000));

paginatedDataSource = List.from(
    _question.getRange(startRowIndex,endindex).toList(growable: false));
notifyListeners();
return true;
 }
}

解决方法

这是我的错别字。 CSS BG 属性缺少语法。例如url('').

,

这里有这个问题的答案: Gmail HTML email background

在为每个 CSS 属性编写电子邮件时,有不同的事实。正如他们所说,这里可能是 Gmail 无法识别背景位置,因此您应该使用背景速记属性。